我想把我的相对布局放在最底层

时间:2013-08-23 19:30:12

标签: android android-layout

我应该做出哪些改变才能将相对布局置于底部?

      <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="86dp"
    android:layout_alignParentBottom="true"
    android:layout_weight="0.08"
    android:gravity="bottom" >
   </RelativeLayout>
      </LinearLayout>

4 个答案:

答案 0 :(得分:1)

您需要将父级布局更改为RelativeLayout,因为android:layout_alignParentBottom属性不会对LinearLayout个孩子执行任何操作:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="86dp"
        android:layout_alignParentBottom="true" >
    </RelativeLayout>
</RelativeLayout>

答案 1 :(得分:0)

您可以使用FrameLayout代替LinearLayout来实现这一目标,因为默认情况下它会将子项从上到下堆叠。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="86dp"
        android:layout_gravity="bottom" >
    </RelativeLayout>

</FrameLayout>

答案 2 :(得分:0)

使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- replace this by any other layout or view. You might want something here, right? -->    
    <View android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"/>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="86dp">
    </RelativeLayout>

</LinearLayout>

答案 3 :(得分:0)

这里有两个问题。第一个是

android:gravity

错了。这会为gravity个孩子的内容设置View。因此,例如在TextView中使用它会将text置于底部TextView。你想要的是

android:layout_gravity

这会在其父级中设置View s gravity

第二个问题是,android:gravity="bottom"无效,LinearLayout orientation vertical orientation。我不确定我能解释为什么这么好,所以我会尝试找到一个解释它的链接。但是,如果您将LinearLayout的{​​{1}}更改为horizontal,您会看到此内容。

因此,您最好的选择是更改orientation(如果可能),如果不是,则将根ViewGroup更改为RelativeLayout并使用属性android:alignParentBottom="true"作为某人已经建议了。

编辑以供解释

This blog postthis SO answer等等解释了一下。但基本上,如果orientationhorizontal,那么View就会按照我们的预期从左到右排列,因此您无法控制左右gravity。对于vertical orientation,对于顶部和底部gravity也是如此,因为当您设置orientation时,Android已经确定它们是垂直放置的位置。我希望这是有道理的。