1

我不明白为什么下面的代码将我的 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

4 回答 4

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>

编辑这个博客进一步解释了事情。

于 2012-04-21T17:06:25.533 回答
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>

如果您可以轻松对齐底部,则可以使用相对布局

于 2012-04-21T16:22:10.093 回答
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>

如果你想在中心的文本视图,你可以使用:

<?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>

希望这对您有所帮助。

于 2012-04-21T16:33:44.927 回答
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>
于 2012-04-21T16:41:02.203 回答