Android: форсирование WebView до определенной высоты (или запуск прокрутки для div)

Я создаю приложение, которое содержит форму ввода и WebView. Проект доступен по адресу http://code.google.com/p/android-sap-note-viewer/

WebView будет отображать веб-сайт на основе ввода, и эта страница имеет DIV с основным содержимым (может быть сотни строк). Я не контролирую содержимое сайта.

Android WebKit, похоже, не выполняет прокрутку в DIV, ссылка http://www.gregbugaj.com/?p=147. Таким образом, пользователю показываются только части DIV без возможности извлечения остального текста. Моей задачей является найти способ отображения всего текста DIV.

Мое мнение определяется следующим образом:

    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView android:layout_width="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_height="wrap_content" 
            android:text="@string/lblNote" />
        <EditText android:id="@+id/txtNote" 
          android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_weight="1"
            android:numeric="decimal"
            android:maxLength="10"
            />
        <Button android:id="@+id/bView" 
          android:text="@string/bView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
             />
    </LinearLayout>    

    <WebView 
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:isScrollContainer="false"
    android:keepScreenOn="false"
    android:minHeight="4096px"
    />

</LinearLayout>

Здесь я попытался жестко запрограммировать WebView на большую высоту, чтобы убедиться, что DIV растянут и показывает весь текст, а также заставить LinearLayout выполнять прокрутку.

Однако WebView всегда адаптируется к размеру экрана (что было бы хорошо в большинстве случаев, но не в этом).

Есть идеи, как решить эту проблему?

(единственное решение, которое я вижу сейчас, - это получить HTML самостоятельно, удалить DIV и отправить его в WebView)


person dparnas    schedule 16.02.2010    source источник
comment
Можете ли вы предоставить (или смоделировать) какой-нибудь HTML-код, демонстрирующий вашу <div> проблему с прокруткой?   -  person CommonsWare    schedule 16.02.2010
comment
Пример HTML доступен в раскрывающемся списке dl.dropbox.com/u/4379928/note_example.html. Основной элемент div начинается с ‹div class=urTxtStd id=NoteContent›   -  person dparnas    schedule 17.02.2010
comment
закончилось переписыванием стиля div на лету, прежде чем передать его в WebView   -  person dparnas    schedule 02.07.2010


Ответы (2)


Я думаю, вы хотите использовать веса для этого. Меня немного смущает ваш xml-код, потому что у вас есть дополнительный тег LinearLayout, но я думаю, что вы ищете что-то вроде этого:

    <LinearLayout 
           android:layout_width="fill_parent" 
           android:layout_height="fill_parent"  
           android: orientation="vertical">

      <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView android:layout_width="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_height="wrap_content" 
            android:text="@string/lblNote" />
        <EditText android:id="@+id/txtNote" 
          android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_weight="1"
            android:numeric="decimal"
            android:maxLength="10"
            />
        <Button android:id="@+id/bView" 
          android:text="@string/bView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
             />
    </LinearLayout>    

    <WebView 
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1"/>
</LinearLayout>

Здесь веб-представление заполнит остальную часть экрана, которую не использует внутренний LinearLayout, поскольку только веб-представление имеет атрибут веса. Надеюсь это поможет.

person Nathan Schwermann    schedule 14.06.2011

Я думаю, вы можете поместить ScrollView вне LinearLayout

person Bennet    schedule 26.02.2010
comment
постараюсь и вернусь с результатами - person dparnas; 08.03.2010