我有这个线性布局垂直方向,包含三个视图
我希望第一个视图位于顶部,第二个位于中心,第三个位于父线性布局的底部,我在布局的子节点上应用layout_gravity,但此属性似乎根本不起作用。 。 所有这些都一个接一个地显示在屏幕的顶部
编辑:如果权重应用于第二个视图,这可能会得到解决,但是layout_gravity正在发生什么,为什么它没有达到目的?
这是代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:text="Wifi not enabled"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="App require wifi to be enabled on your phone"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/btn_wifion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Turn on my Wifi" />
</LinearLayout>
答案 0 :(得分:1)
尝试阅读[更新]部分here。它说 -
“layout_gravity”属性只能与LinearLayout的方向正交使用。
换句话说,如果你有一个水平的LinearLayout,那么通过构造,每个内部子视图只能有layout_gravity顶部,底部和中心。这背后的直觉是已经告诉LinearLayout将每个子视图水平放置在彼此之间(从左到右),因此它只允许每个子视图的layout_gravity的垂直规范。反之亦然,垂直LinearLayout。
同样适用于垂直n layout_gravity
现在不允许您将子视图与父级的顶部/底部/ ...对齐,因为存在RelativeLayout。
也许这就是你要找的东西。 :)
更新有关详情,请参阅此link。 :)
答案 1 :(得分:1)
你最好使用RelativeLayout:以及为什么layout_gravity在线性布局中不起作用,有一次线性布局Class Overview。
要实现您的愿望目标,请使用相对布局并使用android:layout_alignParent
检查以下代码#
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Wifi not enabled"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="App require wifi to be enabled on your phone"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/btn_wifion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Turn on my Wifi" />
</RelativeLayout>
答案 2 :(得分:0)
这是你需要的吗?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_weight="0"
android:text="Wifi not enabled"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_weight="1"
android:text="App require wifi to be enabled on your phone"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/btn_wifion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="0"
android:text="Turn on my Wifi" />
</LinearLayout>