在LinearLayout
中,我们可以使用Layout_Weight水平填充元素,这使得它们占据所有宽度,每个宽度取决于它们的Layout_Weight值(或比率)。我的问题是,如果RelativeLayout
,我该如何做同样的事情。没有像Layout_Weight这样的属性。
我在我的项目中使用RelativeLayout
,它包含4个按钮,这些按钮需要位于屏幕的底部,并且必须填满整个宽度。如果我使用硬编码Layout_Width="20dp"
或类似的东西。当我将方向从纵向更改为横向或反之亦然时,它会产生问题。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/feed_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="@string/feed"
android:textColor="#FF000000" />
<Button
android:id="@+id/iwant_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/feed_button"
android:text="@string/iwant"
android:textColor="#FF000000" />
<Button
android:id="@+id/share_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/iwant_button"
android:text="@string/share"
android:textColor="#FF000000" />
<Button
android:id="@+id/profile_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/share_button"
android:text="@string/profile"
android:textColor="#FF000000" />
</RelativeLayout>
答案 0 :(得分:0)
使相对布局采用全宽
android:layout_width="fill_parent"
将其添加到底部
android:layout_alignParentBottom="true"
答案 1 :(得分:0)
我认为layout_weight
中没有Relative layout
这样的属性。
但是android已经为Linear Layout
提供了功能。在这种情况下,您为什么要使用Relative layout
?
我想您知道如何在layout_weight
中使用Linear Layout
。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" >
<Button
android:id="@+id/feed_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="feed"
android:textColor="#FF000000" />
<Button
android:id="@+id/iwant_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="iwant"
android:textColor="#FF000000" />
</LinearLayout>
我知道您必须使用相对布局但是如果您将以上代码放在您的活动中,它会显示显示屏底部的所有按钮,如果要在任何其他布局的下方显示这些按钮布局,请使用android:layout_below attributte
in <LinearLayout >
标记并使用最外层布局作为相对布局
由于
答案 2 :(得分:0)
确保按钮全部相同的唯一方法是将它们放在LinearLayout
中,填充你希望按钮覆盖的区域,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical" >
<Button
android:id="@+id/feed_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/feed"
android:textColor="#FF000000" />
<Button
android:id="@+id/iwant_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_toRightOf="@id/feed_button"
android:text="@string/iwant"
android:textColor="#FF000000" />
<Button
android:id="@+id/share_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/share"
android:textColor="#FF000000" />
<Button
android:id="@+id/profile_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/profile"
android:textColor="#FF000000" />
</LinearLayout>
</RelativeLayout>
LinearLayout
将填充父版面的整个宽度,并根据重量均匀分割按钮。
如果你想在RelativeLayout
中平均分配两个布局,那么有一个非常好的技巧。创建一个0x0像素的“不可见”布局,将其对齐到父视图的中心,然后将两个布局对齐到相对于您想要的不可见布局。
答案 3 :(得分: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);