2

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

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

3 回答 3

1

尝试阅读此处的 [UPDATE] 部分。它说 -

“layout_gravity”属性只能与 LinearLayout 的方向正交使用。

换句话说,如果你有一个水平的LinearLayout,那么通过构造,每个内部子视图只能有layout_gravity top、bottom和center。这背后的直觉是 LinearLayout 已经被告知将每个子视图水平相邻放置(从左到右),因此它只允许垂直指定每个子视图的 layout_gravity。垂直线性布局反之亦然。

垂直 n 也是如此,layout_gravity现在不允许您将子视图与父视图的顶部/底部/...对齐,因为存在相对布局。

也许这就是你要找的。:)

更新并参阅此链接了解更多信息。:)

于 2012-11-21T04:28:24.900 回答
1

你最好使用RelativeLayout: 以及为什么layout_gravity 在线性布局中不起作用,看看线性布局的类概述

为了实现您想要的目标,请使用相对布局并使用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>
于 2012-11-21T04:54:06.943 回答
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>
于 2012-11-21T04:11:27.500 回答