2

我有一个ListView有两列的,我想要的是把它ListView放在一个Linerlayout. 下面是布局代码ListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center" >
    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:id="@+id/mylist">
    </ListView>
</LinearLayout>

这是各个项目的布局ListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView 
        android:id="@+id/prayLabel"
        android:layout_width="100dip"
        android:layout_height="wrap_content" />
    <TextView 
        android:id="@+id/prayValue"
        android:layout_width="100dip"
        android:layout_height="wrap_content" />
</LinearLayout>

虽然我ListView的出现垂直居中,但它没有出现水平居中,因为它的宽度跨越了屏幕的整个宽度。我想当我在所有地方使用wrap_contentlayout_width的宽度不应该跨越屏幕/布局的整个宽度?

谢谢

4

2 回答 2

3

为简单起见,我将其包装在一个RelativeLayout中-我也为此苦苦挣扎,最终在更简单的布局上执行此操作**:

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

        <RelativeLayout
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">

            <!-- Note the 'centre in parent' tag below -->

            <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:id="@+id/mylist"/>

       </RelativeLayout>

    </LinearLayout>

** 免责声明:这种模式在更复杂的视图上可能会变得昂贵,但LinearLayout> RelativeLayout>ListView层次结构就可以了。

于 2012-09-10T09:05:59.980 回答
0

您可以android:weightSum在线性布局上使用,然后使用任一侧的空视图来居中ListView,如下所示:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">
    <View
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".05"/>
    <ListView
        android:id="@+id/list_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".9"
        android:paddingLeft="4dp"
        android:paddingRight="4dp" />
    <View
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".05"/>
</LinearLayout>

当然你可以调整权重,只要确保Views设置相同,以便ListView居中。

于 2016-09-09T14:13:40.980 回答