HorizontalsCrollView's FillViewport отключает прокрутку?
-
24-10-2019 - |
Вопрос
У меня есть этот макет, и он странно масштабируется (вероятно, из -за неразрешимого гнездования макета), если я не использую FillViewport = true в моем горизонтальсколлвэйв.
Все работает Peachy (за исключением нечетного масштабирования), когда FillViewport = false, но когда FillViewport = true, масштабирование идеально подходит, но прокрутки не происходит.
Это макет (примечание: я знаю, что вы не должны размещать веб -просмотр в ScrollView. Но WebView не имеет SmoothScrollto и не выявляет метод SetScroller, так что ... Bleh.)
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webContainer"
android:layout_below="@+id/titlebar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webZ"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</HorizontalScrollView>
Настройка Android: FillViewport = "true" обычно не отключает прокрутку в представлении, не так ли?
Он просто должен быть уверен, что Scrollview заполняет видоперт независимо от размера его содержимого, а? Я думаю, что Viewport - это видимая область экрана, и в Webview определенно больше контента с видимой области, я просто не могу больше прокручивать его.
Я вижу из LogCat, что методы прокрутки называются, они просто не меняют экран. (Если я не установил FillViewport в False.)
Решение
Проблема в том, что вы используете «fill_parent», что означает «быть таким же большим, как мой родитель». Вместо этого используйте wrap_content для ширины.
Другие советы
Я сталкиваюсь с аналогичной проблемой со стандартным ScrollView, содержащим веб -просмотр: прокрутка больше не работала. Изменение fill_parent на wrap_content не сработала для меня.
Пример Ромена Гая работает нормально, когда расширенный представление является TextView, но не тогда, когда он заменяется WebView.
Что не работает:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1.0">
</WebView>
<Button
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Click">
</Button>
</LinearLayout>
</ScrollView>
Когда я добавляю небольшое количество данных в WebView, кажется в порядке:
Но когда я заполняю веб -просмотр большим количеством данных, он не работает, как вы можете видеть ниже:
Кнопка всегда отображается, а свиток больше не работает. На самом деле, сенсорный свиток не работает, а прокрутка DPAD работает ...
Я не нашел причин для этого, но я нашел обходной путь: он состоял в добавлении линейного уровня, содержащего WebView
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout android:id="@+id/linearlayout"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1.0"
android:orientation="vertical">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</WebView>
</LinearLayout>
<Button
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Click">
</Button>
</LinearLayout>
</ScrollView>
Теперь это работает нормально: