什么是相对于layout_weight类似的

时间:2012-04-04 10:03:45

标签: android android-layout relativelayout android-linearlayout

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>

4 个答案:

答案 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);