layout_gravity没有做到它所期望的

时间:2012-11-21 04:05:58

标签: android

我有这个线性布局垂直方向,包含三个视图

我希望第一个视图位于顶部,第二个位于中心,第三个位于父线性布局的底部,我在布局的子节点上应用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>

3 个答案:

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