Android:当设置LAYER_TYPE_SOFTWARE时,文本在webview中经常消失

时间:2013-08-26 16:40:07

标签: android android-webview

我正在尝试在scrollview中添加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文件而不是在模拟器上时,会出现此问题。我使用的是Android 4.1.2版。有人能告诉我需要做什么,以便显示文本而不会产生闪烁效果和透明背景吗?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

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

{{$city->city}}

我希望这可以帮到你。

答案 2 :(得分:0)

我有同样的问题,但是相反。单击文本输入框并向上滚动软键盘(在我的Sony手机上)时,Web视图中的所有内容消失了。

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

  • 在清单中的活动声明中,使Web视图在键盘向上滚动时平移:android:windowSoftInputMode="adjustPan"
  • 在布局的根部,以允许Web视图在键盘向上滚动时平移:android:fitsSystemWindows="true"
  • 在webview中,禁用硬件加速以防止随着键盘向上滚动而使网页表单项消失:android:layerType="software"