android WebView未在API 30中滚动

xfb7svmp  于 2023-03-27  发布在  Android
关注(0)|答案(1)|浏览(188)

我在WebView中有一个html文件,它只包含文本。它不滚动API 30设备(模拟器)。但它滚动API 30以下的其他设备。
XML文件:

<WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" i tried match_parent and 0dp
        app:layout_constrainedHeight="true"
        android:layout_marginStart="@dimen/_20sdp"
        android:layout_marginTop="@dimen/_20sdp"
        android:layout_marginEnd="@dimen/_20sdp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/divider" />

我也试过:

android:scrollbars="vertical" (xml)
           webView.isVerticalScrollBarEnabled = true (programatic)

我试着使用FrameLayout或ScrollView,但仍然不起作用。顺便说一下,我加载了一个资产文件:

webView.loadUrl("file:///android_asset/Agreement.html")

这是HTML文件的示例结构:

<html>
    <head>
    <title>Agreement</title>
    </head>
    <body>
    <p>some texts... with <i> tag sometimes.... there are 2 paragraph </p>
    </html>
xtfmy6hx

xtfmy6hx1#

此问题与WebView滚动API 30的默认行为更改有关。
API 30WebViewScrollView父处理。如果它不存在,则由WebView处理。
您必须禁用WebView滚动:

webView.setScrollbarFadingEnabled(false);

WebView包裹在ScrollView内,并设置高度match_parent

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</ScrollView>

如果使用的是ConstraintLayout,请将以下属性添加到.xml布局中的WebView

<WebView
    android:id="@+id/web_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constrainedHeight="true" />

android:scrollbarsandroid:scrollbarStyle属性添加到.xml布局中的WebView

<WebView
    android:id="@+id/web_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:scrollbarStyle="insideOverlay" />

检查WebView内部的内容是否超过屏幕高度。
使用不同的layout(如LinearLayoutRelativeLayout)可以解决问题:

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

    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scrollbars="vertical" />

</LinearLayout>

验证应用于WebView的自定义样式是否可能发生冲突:
1.在res/values目录中打开styles.xml
1.检查自定义样式。(它们可能有父Widget.WebView
1.检查自定义样式是否冲突,或者它们是否设置了heightwidth
1.删除或修改以查看它是否解决滚动。

相关问题