Android: относительное расположение двух кнопок занимают все доступное горизонтальное пространство - PullRequest
13 голосов
/ 14 марта 2011

У меня есть относительное расположение, и у меня есть две кнопки с текстами "привет" и "мир" соответственно. Я хочу, чтобы эти две кнопки лежали рядом друг с другом и в равной степени занимали все доступное горизонтальное пространство.

я попробовал следующее, но не получил ожидаемый результат

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

Я попытался изменить Android: layout_width обоих потомков на fill_parent, но это тоже не сработало.

У меня есть рабочее решение использования LinearLayout с layout_weight, установленным на 0.5 для обоих дочерних элементов, но я хотел понять, есть ли способ сделать это в самой относительной компоновке.

спасибо,

Ответы [ 6 ]

34 голосов
/ 18 февраля 2013
  <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>

Check

Примечание:

  • Даже если android:layout_width было fill_parent, результат не изменится.
  • Что на самом делеимеет значение здесь android:layout_alignParentRight и android:layout_alignParentLeft
6 голосов
/ 14 марта 2011

Вы не можете сделать это с RelativeLayout. Попробуйте LinearLayout и атрибут layout_weight.

4 голосов
/ 18 сентября 2014

Я знаю, что это старый запрос, но, может быть, он кому-нибудь пригодится.

В вашем случае правильным решением является использование линейного макета.Но для ответа на ваш запрос и предположим, что у вас есть другой виджет в вашем макете:

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

1 голос
/ 30 декабря 2012

Вы можете попробовать реализовать LinearLayout (по горизонтали) и затем установить android: layout_weight = "1" для обеих кнопок.

0 голосов
/ 08 мая 2012

Возьмите кнопку, выровняйте ее по центру с 1dp width и height. Теперь поместите ваш Button1 со свойством android:layout_width = fill parent to left of center, снова относительно центральной кнопки установите Button2 в right of center со свойством android:layout_width = fill parent.

0 голосов
/ 07 мая 2012
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

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

в относительной компоновке вы можете достичь этого динамически.

Button1.setWidth(width / 2);
Button2.setWidth(width / 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...