Android layout_gravity

时间:2012-04-21 16:18:05

标签: android

我无法理解为什么以下代码将我的TextView放在屏幕的左上角。根据我对layout_gravity的理解,它似乎应该将我的TextView放在屏幕的底部。

任何人都可以为我阐明一下吗?尽管看起来非常简单,但这种线性布局给我带来了无数令人头疼的问题。怎么可能看起来如此简单,难以掌握这样的王室痛苦?

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello"
            android:layout_gravity="bottom"
            android:background="#FFF"
            />    

    </LinearLayout>

4 个答案:

答案 0 :(得分:2)

设置为垂直方向的LinearLayout将忽略引用垂直对齐的所有layout_gravity参数。因此,例如“底部”不会工作,但“中心水平”将起作用。 (始终进行垂直对齐,以便布局中的每个视图都放置在布局中的其他视图下。)

相对布局可能是要走的路,或者你可以使用这个可能非常接近你想要的代码。

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:gravity="bottom"
        android:layout_weight="1.0"
        android:background="#FFF" />

</LinearLayout>

修改blog进一步解释了事情。

答案 1 :(得分:0)

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#FF0000">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello"
            android:layout_alignParentBottom="true"
            android:background="#FFF"
            />    

    </RelativeLayout>

你可以使用相对布局,你可以轻松对齐底部

答案 2 :(得分:0)

我认为这段代码可以满足您的需求:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="bottom"
    android:background="#FF0000">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:background="#FFF"
        />    

</LinearLayout>

如果您想将textview放在中心,可以使用:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="bottom"
    android:background="#FF0000">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:layout_gravity="center"
        android:background="#FFF"
        />    

</LinearLayout>

希望这对你有所帮助。

答案 3 :(得分:0)

如果这是布局的简单性,则根本不应将其包装在LinearLayout中。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="#FFF"
    android:text="HELLO HELLO" />

如果你需要包裹它,请删除垂直方向:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF0000" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="#FFF"
        android:text="HELLO HELLO" />

</LinearLayout>