6

我正在尝试在滚动视图中添加一个 webview,它可以显示具有透明背景的静态 HTML 文本。这是代码

        WebView descr = (WebView) view.findViewById(R.id.description);
        descr.setBackgroundColor(Color.TRANSPARENT);
        descr.loadData(desc, "text/html", "utf-8");
        descr.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

如果我不设置 setLayerType 值,我可以正确看到文本。但是,它会在滚动完成时添加闪烁效果。如果添加了 setLayerType 行,则某些页面的文本会消失。这是我的布局的样子

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/title" >

    <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:descendantFocusability="blocksDescendants">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:contentDescription="@id/title"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            />

        <WebView
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:textAlignment="gravity"
            android:textSize="14sp"
            android:background="@null"
            android:focusable="false" />
    </LinearLayout>
</ScrollView>

当我在手机而不是模拟器上安装 .apk 文件时会出现此问题。我使用的是安卓版本 4.1.2。有人可以让我知道需要做什么才能显示文本而没有闪烁效果和透明背景吗?

4

3 回答 3

2

请将#android:layerType="software"# 添加到 WebView 和所有容器中,直到 ScrollView。在 Android4.4 上,它适用于我。

<ScrollView
    android:layerType="software"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/title" >

    <LinearLayout 
        android:layerType="software"
        android:orientation="vertical" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:descendantFocusability="blocksDescendants">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:contentDescription="@id/title"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            />

        <WebView
            android:layerType="software"
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:textAlignment="gravity"
            android:textSize="14sp"
            android:background="@null"
            android:focusable="false" />
    </LinearLayout>
</ScrollView>
于 2015-09-10T21:33:27.063 回答
1

我遇到了同样的问题,我解决了;scrollview和webview setlayertype软件中的webview,所以scrollview需要setlayertype软件;如下所示:

<ScrollView
    android:layout_width="match_parent"
    android:layerType="software"
    android:layout_height="match_parent"
    android:layout_below="@+id/title" >

我希望这可以帮助你。

于 2015-07-13T04:05:03.310 回答
0

我有同样的问题,但反过来;当单击文本输入框并且软键盘向上滚动(在我的索尼手机上)时,webview 中的内容消失了。

这些是我使用的对 webview 有直接影响的所有设置:

  • 在 Manifest 中,在活动声明中,使 webview 在键盘向上滚动时向上平移:android:windowSoftInputMode="adjustPan"
  • 在布局的根目录中,允许 webview 在键盘向上滚动时平移:android:fitsSystemWindows="true"
  • 在 webview 中,禁用硬件加速以防止网页表单项在键盘向上滚动时消失:android:layerType="software"
于 2018-08-15T11:06:01.577 回答