Reinherd
Reinherd

Reputation: 5506

Extremly weird behaviour on WebViews when those are large in 4.0.4

When I render a large Webview on android 4.1, the webview loads correctly, but also popsout of the layout. Here's an example: enter image description here

As you can see in the top left corner, there's a white space, that shouldn't be there. If I tap with my finger it, it disappears...

I've tried to invalidate & requestLayout the top level container of this contentView, but it's still happening.

As I said in title, this is only happening in 4.0.4 devices (I know that 4.1 are ok.)

Do you guys know what else could I try?

Thanks.

Edit That blank rectangle, is somehow over the menubar. Maybe invalidating menu will solve it? I've tried: this.invalidateOptionsMenu(); and still the same issue.

Edit2: This is the layout:

<?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>

The webviews are added dynamically to VariableContent

Upvotes: 1

Views: 771

Answers (1)

Rick77
Rick77

Reputation: 3211

Granted that I can't pinpoint exactly what the source of your problem is, you can give disabling the hardware acceleration a try:

web.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

There are also other "interesting" options that you might try to switch on and off:

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

(I know that caching shouldn't be related to your problem, but turning caching off fixed the most curious glitches in my webview, so you probably want to try yourself) and

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

No offense to the developers Team, but WebViews on Android are quite a mess, and here are a couple of links to back this statement up:

which might also be useful to you.

Let us know if you find some solution anyway

Hope this helps

Upvotes: 2

Related Questions