Search code examples
androidviewandroid-relativelayout

RelativeLayout width and height fill_parent doesn't work


This is my layout which is an info window, and its shown where there is new info to show to the user.

The layout should take the whole screen with some transparent background color, and a small text layout:

<?xml version="1.0" encoding="utf-8"?>
<!-- info fragment - used by the fragment to provide info on a specific fragment -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.coapps.pico"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background_dark_green" >

    //this is the only layout i see in the result. not it's parent's layout...
    <RelativeLayout
        android:id="@+id/fragment_info_relativelayout_info"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:layout_alignParentTop="true"
        android:background="@drawable/background_info_window"
        android:clickable="true" >

        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_centerInParent="true"
            android:layout_margin="5dp" >

            <!-- The info textView -->

            <com.coapps.pico.NillanTextView
                android:id="@+id/fragment_info_textview_info"
                style="@style/text_shadow_black"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:gravity="left"
                android:text="Some Text "
                android:textColor="@android:color/white"
                app:isBold="true" />
        </ScrollView>
        <!-- Tap to close -->

        <com.coapps.pico.NillanTextView
            android:id="@+id/fragment_info_textview_tap_to_close"
            style="@style/text_shadow_black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:gravity="right"
            android:paddingRight="5dp"
            android:text="@string/button_tap_to_close"
            android:textColor="@android:color/white"
            app:isBold="true" />
    </RelativeLayout>

</RelativeLayout>

I'm adding this layout to another ViewGroup like this:

/**
 * Show the info window
 */
public void show()
{
    //if the window is not visible
    if (!isVisible())
        //add window's view
        rootView.addView(infoWindowView);
}

this code add the info window into its root view container in the last index.

in result i only see the second RelativeLayout which contains the text but i don't see its parent root layout which supposed to be transparent...

Any ideas why ?

Update: This is my container:

<?xml version="1.0" encoding="utf-8"?>
<!-- This is the main layout of the application -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_basic_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</RelativeLayout>

Solution

  • Try change

    <RelativeLayout
            android:id="@+id/fragment_info_relativelayout_info"
            android:layout_width="fill_parent"
            android:layout_height="80dp"
            android:layout_alignParentTop="true"
            android:background="@drawable/background_info_window"
            android:clickable="true" >
    

    to

    <RelativeLayout
            android:id="@+id/fragment_info_relativelayout_info"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:background="@drawable/background_info_window"
            android:clickable="true" >
    

    Anyway, why the need of nested RelativeLayout ?

    I see how do you add the view, so try also this:

    infoWindowView.setLayoutParams(
           new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    rootView.addView(infoWindowView);