ListView上垂直居中列表项

时间:2012-06-13 13:26:49

标签: android layout

我正在开发一个Android应用程序。

在一项活动中,我有一个包含列表项的列表。那些列表项将有一个TextView(我使用自己的布局,因为我可能需要添加更多的小部件)。

这是ListActivity xml:

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

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="469dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="40dp">
    </ListView>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/orderErrorMsg"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textSize="16dp" >
        </TextView>
    </RelativeLayout>

</LinearLayout>

这是ListItem xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/orderToFillName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:textSize="20dp" />

</LinearLayout>

最后,结果就是这样:

enter image description here

为什么TextView不是垂直居中的?

3 个答案:

答案 0 :(得分:4)

你在TextView的layout_height上有“wrap_content”=由于TextView被紧紧包裹,所以没有空间可以垂直居中。

尝试将layout_height更改为“match_parent”,或者在LinearLayout中放置gravity =“center_vertical”属性。

<TextView
        android:id="@+id/orderToFillName"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        android:textSize="20dp" />

答案 1 :(得分:1)

答案非常简单:你必须将它添加到TextView的XML中:

android:gravity="center"

目前,您没有在TextView中设置文本的位置,只是在View的位置。

祝福, 添

答案 2 :(得分:0)

尝试这种方式:

<TextView
        android:id="@+id/orderToFillName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity= "center_vertical|center_horizontal"
        android:textSize="20dp" />

android:gravity="center"