Why does my relative layout occupy full screen width

10,900

Solution 1

cause you have a

        android:layout_alignParentLeft="true" 

width an object , and a

        android:layout_alignParentRight="true" 

width another object , then the layout extends to both side , giving you the full width layout.

But when you use Layout_alignParentXXXXX , and you put in parent WRAP_CONTENT , that makes children to go to the upper layout with a width defined.

Solution 2

This line makes the "Press Here" button (Button01) align to the right:

android:layout_alignParentRight="true" 

That makes your layout fill the parent in width.

Share:
10,900
Santosh
Author by

Santosh

Embedded Solutions and Mobile applications developer

Updated on June 18, 2022

Comments

  • Santosh
    Santosh almost 2 years

    Why does my relative layout occupy full screen width

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#f00"
        >
        <Button  
            android:id="@+id/Button01"  
            android:text="Press Here"  
            android:layout_alignParentRight="true" 
            android:layout_width="wrap_content"   
            android:layout_height="wrap_content"></Button> 
         <Button  
            android:id="@+id/Button02"  
            android:text="02"  
            android:layout_alignParentLeft="true" 
            android:layout_width="wrap_content"   
            android:layout_height="wrap_content"></Button>  
    </RelativeLayout>
    

    I have specified the relative layout to "wrap_content", then why does it occupy full screen space. Out put is same even if i say android:layout_width="fill_parent". Enlighten

    Enlighten me please!

    EDIT : I think i was not very clear with my question earlier. Apologies for that. When I have 2 child views in a relative layout and one of them is left aligned to parent and other is right aligned and relative layouts width is WRAP_CONTENT then I expected the layouts width to be just the sum of width of 2 buttons (isn't that's what WRAP_CONTENT means??). I know there are other ways of achieving the UI im looking for but Im just trying to understand these relative layout tags properly.

    EDIT 2: I have experimented a bit and it looks like if we using Layout_AlighParentRight with its parent's width as WRAP_CONTENT then the upper layout width is used for calculation (like few answers pointed out below). But we are using just the Layout_alignParentLeft then it works as expected and layout width is not extending to the complete screen. Thanks for the help folks!

  • Santosh
    Santosh over 12 years
    Thanks for the answer, but its not very clear to me. Are you saying that if we use Layout_alignParentXXXX and the parents width is WRAP_CONTENT, then upper layout (parent's parent) width is used for calculation?? is that true?
  • A.Quiroga
    A.Quiroga over 12 years
    my experience told me that , but you can try it , putting another upper LinearLayout with a width for example of 50dip and see the result :)
  • Santosh
    Santosh over 12 years
    I have experimented a bit and it looks like if we using Layout_AlighParentRight with its parent's width as WRAP_CONTENT then the upper layout width is used for calculation (like you pointed out). But we are using just the Layout_alignParentLeft then it works as expected and layout width is not extending to the complete screen. Thanks for the help Quiroga!