Я пытаюсь создать 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 сходит с ума и не прокручивается до нижней части списка должным образом. Я предполагаю, что он не может вычислить высоту каждой дочерней строки и ошибочно переходит к середине списка, а не к нижней части.
Я уже читал слишком много подобных вопросов, как это, и я не получил хороший ответ...
Проблема в том, что webview не имеет размера, когда он создан и измерен, высота действительна только после того, как веб-просмотр ловит загрузку и рендеринг содержимого, которое обычно слишком поздно для списка, чтобы вычислить размер. Вы считали, что нужно установить высоту в макет. Как насчет того, чтобы не использовать список, а не один большой веб-просмотр?