我有一个相对布局,我有两个按钮,分别带有文本“hello”和“world”。我希望这两个按钮彼此相邻,同样占据整个水平空间。
我尝试了以下但没有得到预期的输出
<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,但我想了解是否有相关布局本身的方法。
感谢,
答案 0 :(得分:34)
<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:layout_width
为fill_parent
,结果也不会改变。android:layout_alignParentRight
和android:layout_alignParentLeft
答案 1 :(得分:6)
您无法使用RelativeLayout
执行此操作。试试LinearLayout
和layout_weight
属性。
答案 2 :(得分:4)
我知道这是一个旧请求,但也许它对某些人有用。
在您的情况下,正确的解决方案是使用线性布局。但是为了回复您的请求并假设您的布局中有另一个小部件:
<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>
答案 3 :(得分:1)
您可以尝试实现LinearLayout(水平),然后为两个按钮设置android:layout_weight =“1”。
答案 4 :(得分:0)
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
在相对布局中,您可以动态地实现此目的。
Button1.setWidth(width / 2);
Button2.setWidth(width / 2);
答案 5 :(得分:0)
使用按钮将其与1dp
width
和height
对齐。现在,将Button1与属性android:layout_width = fill parent
to left of center
一起放置,再次将中心按钮放置到具有属性right of center
的{{1}}。