我应该做出哪些改变才能将相对布局置于底部?
<?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>
答案 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 post和this SO answer等等解释了一下。但基本上,如果orientation
为horizontal
,那么View
就会按照我们的预期从左到右排列,因此您无法控制左右gravity
。对于vertical orientation
,对于顶部和底部gravity
也是如此,因为当您设置orientation
时,Android已经确定它们是垂直放置的位置。我希望这是有道理的。