WebView как строки ListView не прокручивается должным образом - PullRequest
1 голос
/ 20 декабря 2011

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

Я уже прочитал слишком много похожих вопросов, таких как this , и я не получил хорошего ответа ...

1 Ответ

0 голосов
/ 20 декабря 2011

Проблема заключается в том, что веб-просмотр не имеет размера при его создании, и измеренная высота действительна только после того, как веб-просмотр загрузил и отредактировал контент, который обычно слишком поздно для просмотра списка для расчета размера. Вы рассматривали возможность установки высоты в макете. Как насчет того, чтобы не использовать просмотр списка вместо одного большого веб-просмотра?

...