WebView как строки ListView не прокручиваются должным образом

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

Я уже прочитал слишком много подобных вопросов, таких как этот, и я не получил хороший ответ...


person Maghoumi    schedule 20.12.2011    source источник
comment
Больше связано с вашими предыдущими вопросами; но я предполагаю, что вы не получили свои рабочие/желаемые результаты анимации с помощью AnimationDrawable? developer.android.com/reference/android/graphics/drawable/   -  person Jave    schedule 20.12.2011
comment
@Jave Я уже пытался вмешиваться в это! Проблема в том, как я могу встроить это в текст??   -  person Maghoumi    schedule 20.12.2011
comment
У меня никогда не было необходимости пробовать это самому, но вы можете использовать соединениеDrawables в текстовом представлении. Это может быть не то, что вам нужно, поскольку вы не можете вставлять изображения/смайлики в текст, только рядом с ним. Тогда я думаю, вам лучше создать свой собственный вид/группу просмотра, который может обрабатывать несколько текстовых сегментов/рисунков. Мягко говоря, интересная проблема.   -  person Jave    schedule 20.12.2011
comment
@Jave Вот почему я говорю, что мне надоел Android ... Если бы это было в Windows Mobile, я просто знал, как с этим справиться без болезненных манипуляций с существующими элементами управления. В случае Android любой может создать открытый фреймворк и утверждать, что у разработчиков есть свобода делать то, что они хотят!!! Позор Google за то, что он оставил нас связанными руками... В любом случае, спасибо за ответ!   -  person Maghoumi    schedule 20.12.2011
comment
Я не разделяю вашу точку зрения, хотя и понимаю, к чему вы клоните. Мне очень нравится разработка под андроид. Но опять же, я не пробовал ни одну из других платформ. В любом случае удачи вашему проекту :)   -  person Jave    schedule 21.12.2011


Ответы (1)


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

person Prakash Nadar    schedule 20.12.2011
comment
У меня были сомнения по этому поводу. Дело в том, что я не могу использовать фиксированную высоту для WebView, так как он будет отображать содержимое сообщения, а длина сообщения заранее неизвестна, и я не хочу, чтобы полосы прокрутки появлялись в WebView! Как и в другом вопросе, у WebView есть свои проблемы (неправильная прокрутка вниз страницы) - person Maghoumi; 20.12.2011
comment
@ M2X, ты нашел какое-нибудь решение этой проблемы? я столкнулся с той же проблемой - person Akhilesh Sk; 01.04.2014
comment
@AkhileshSk Нет, к сожалению, нет ... В итоге я пошел другим путем, забыв о GIF-анимациях и вместо этого отображая статические изображения! - person Maghoumi; 01.04.2014
comment
@ M2X Я нашел решение, заключающееся в добавлении всех элементов веб-просмотра в прокрутку, а не в список, и это определенно решит вашу проблему. Пракаш Надар был совершенно прав в своем заключении. - person Akhilesh Sk; 02.04.2014