1

当我在 android 4.1 上渲染一个大型 Webview 时,webview 正确加载,但也弹出布局。这是一个例子: 在此处输入图像描述

正如您在左上角看到的那样,有一个不应该存在的空白区域。如果我用手指点击它,它就会消失...

我试图使此 contentView 的顶级容器无效和 requestLayout 无效,但它仍在发生。

正如我在标题中所说,这只发生在 4.0.4 设备中(我知道 4.1 还可以。)

你们知道我还能尝试什么吗?

谢谢。

编辑 那个空白矩形,不知何故在菜单栏上方。也许无效菜单会解决它?我试过了:this.invalidateOptionsMenu();仍然是同样的问题。

Edit2: 这是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/containerTotaApp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="horizontal" >
<View
    android:id="@+id/rightshadow"
    android:layout_width="10dp"
    android:layout_height="10dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/contentContainer"
    android:background="@drawable/shadow_right" />

<RelativeLayout
    android:id="@+id/bgImageSliderContainer"
    android:layout_width="700dp"
    android:layout_height="fill_parent"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="#000000" >

</RelativeLayout>

<ScrollView
    android:id="@+id/scrollView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true" >

    <LinearLayout
        android:id="@+id/containerRightOptional"
        android:layout_width="680dp"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="vertical"
        android:visibility="gone" >
    </LinearLayout>
</ScrollView>

<RelativeLayout
    android:id="@+id/navigationContainer"
    android:layout_width="320dp"
    android:layout_height="match_parent"
    android:background="#393939" >

    <LinearLayout
        android:id="@+id/containerTopMenu"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:background="@drawable/companybg"
        android:gravity="center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textEntradaMenu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="COMPANY"
            android:textSize="32sp" />

    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_below="@+id/containerTopMenu">

        <LinearLayout
            android:id="@+id/containerEntradesMenu"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >
        </LinearLayout>
    </ScrollView>

</RelativeLayout>

<RelativeLayout
    android:id="@+id/contentContainer"
    android:layout_width="600dp"
    android:layout_height="fill_parent"
    android:layout_toRightOf="@+id/navigationContainer" 
    android:background="#ffffff">

    <LinearLayout
        android:id="@+id/titleContentContainer"
        android:layout_width="fill_parent"
        android:layout_height="70dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="center_vertical" 
        android:background="#EBEBEB">

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:onClick="toggleMenu"
            android:src="@drawable/vista2_cerca" />

        <TextView
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="TextView"
            android:textColor="#288BA2"
            android:textSize="30sp" />

    </LinearLayout>

    <View
        android:id="@+id/separadortop"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@+id/titleContentContainer"
        android:background="#cecece"
        android:visibility="gone" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/separadortop"
        android:visibility="gone" />

    <View
        android:id="@+id/separadortop2"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@+id/spinner1"
        android:background="#cecece" />

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/separadortop2"
        android:background="#ffffff" >

        <LinearLayout
            android:id="@+id/variableContent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

        </LinearLayout>
    </ScrollView>

</RelativeLayout>

webviews被动态添加到VariableContent

4

1 回答 1

2

诚然我无法准确指出您的问题的根源是什么,您可以尝试禁用硬件加速:

web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

您还可以尝试打开和关闭其他“有趣”的选项:

webv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

(我知道缓存不应该与您的问题有关,但关闭缓存修复了我的 webview 中最奇怪的故障,所以您可能想自己尝试)和

web.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);

开发人员团队无意冒犯,但 Android 上的 WebViews 相当混乱,这里有几个链接可以支持这个声明:

这也可能对您有用。

让我们知道您是否找到了解决方案

希望这可以帮助

于 2013-05-28T14:46:12.980 回答