开发者

android: relative layout two buttons occupy all the available horizontal space

i have a relative layout and i have two buttons in it with texts "hello" and开发者_Go百科 "world" respectively. i want these two buttons to lie adjacent to each other and equally occupy the whole horizontal space available.

i tried the following but didnt get expected output

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

     <Button android:layout_height="wrap_content" android:layout_width="wrap_content"      android:text="@string/world" android:id="@+id/world"
     android:layout_alignParentRight="true"
     android:layout_toRightOf="@+id/hello"
     android:layout_alignTop="@+id/hello"
  />  


       <Button
          android:id="@+id/hello"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/hello"
          android:layout_alignParentLeft="true"
          android:layout_alignParentBottom="true"
        />
   </RelativeLayout>

i tried changing the android:layout_width of both children to fill_parent but that didnt work too.

i have a working solution of using LinearLayout with layout_weight set to 0.5 on both childs but i wanted to understand if there is way to do that in relative layout itself.

thanks,


  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/hello"
        android:layout_toRightOf="@+id/view"
        android:text="First" />

    <View
        android:id="@+id/view"
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_centerHorizontal="true" />

    <Button
        android:id="@+id/hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/view"
        android:text="Second" />

</RelativeLayout>

android: relative layout two buttons occupy all the available horizontal space

Note:

  • Even if the android:layout_width was fill_parent the result will not change.
  • What actually matters here is android:layout_alignParentRight and android:layout_alignParentLeft


You can't do this with RelativeLayout. Try LinearLayout and the layout_weight attribute.


I know that is a old request, but maybe it's can be useful for somebody.

In your case the right solution is using Linear Layout. But for reply your request and suppose that you have an other widget in your layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <TextView
    android:id="@+id/tvdescription"        
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:text="description here"/>

 <LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/tvdescription">

    <Button          
        android:id="@+id/world"
        android:layout_height="wrap_content" 
        android:layout_width="0dp"      
        android:text="@string/world"
        android:weight="1"
    />  
   <Button
        android:id="@+id/hello"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:weight="1"
    />
</LinearLayout>


You may try implementing LinearLayout(horizontal) and then set android:layout_weight="1" for both buttons.


DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int height = metrics.heightPixels;
int width = metrics.widthPixels;

in relative layout you can achieve this dynamically.

Button1.setWidth(width / 2);
Button2.setWidth(width / 2);


Take a Button align it in center with 1dp width and height. Now place your Button1 with the property android:layout_width = fill parent to left of center, again with respect to center button put Button2 to the right of center with the property android:layout_width = fill parent.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜