Я пытаюсь сделать ListView
, который должен действовать примерно так же, как стандартное приложение для обмена сообщениями или GTalk. На нем показан разговор двух людей. WebView
отвечает за отображение HTML-текста беседы ВКЛЮЧАЯ несколько GIF-анимаций (смайликов, которые TextView
не может показать) Очевидно, что когда приходит новое сообщение, список должен прокручиваться до конца. вниз (для этого я использую listview.setSelection(...)
)
Теперь, если высота WebView
больше, чем обычно, ListView
путается и прокручивается к элементу, близкому к концу списка, а не к последнему элементу. Как я уже сказал, я думаю, что в списке есть проблемы с вычислением высоты его дочерних элементов. (Уже отключили smoothScroll
на ListView
, как упоминается в документации.
файл макета, используемый в качестве строк в ListView
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" android:background="#f7f7f7">
<ImageView
android:id="@+id/imgFriendAvatarChat"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
/>
<WebView
android:id="@+id/friendMessageWebView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
/>
</LinearLayout>
У меня нет полезного ответа на это или этого и я прибегаю к последнему решению, которое приходит на ум, которое на самом деле является неприятным, а затем я прощаюсь с Android! (Как вы можете догадаться, мне уже надоело, что Android тормозит каждый аспект разработки.)
Решение использует WebView
как ListView
строк, чтобы показать, что я хочу. Проблема в том, что если содержимое WebView
составляет, скажем, 3 строки, то ListView сходит с ума и не прокручивается до конца списка должным образом. Я предполагаю, что он не может рассчитать высоту каждой дочерней строки и по ошибке переходит к середине списка, а не к его нижней части.
Я уже прочитал слишком много подобных вопросов, таких как этот, и я не получил хороший ответ...