2

目标

我希望活动中的 Listview 填充屏幕的宽度(以便 listview 滚动条出现在屏幕边缘)。

然后我希望 listview Row 不填充 100% 的宽度。例如,我希望它只有 400dp 宽。

问题

Listview 行总是占用列表视图宽度的 100%——即使宽度应该是 400dp。

主列表视图的 XML

<?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="@drawable/background_image">

    <LinearLayout
            android:id="@+id/Envelope"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/prompt"
            android:layout_marginTop="10dip"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            android:gravity="center_horizontal">

        <ListView android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:layout_marginBottom="15dip"
            android:divider="#00FFFFFF"
            android:dividerHeight="7dip"
            android:cacheColorHint="#00000000"
            android:drawSelectorOnTop="false"
            android:background="#00FFFFFF"
            android:scrollbarStyle="outsideOverlay" />

    </LinearLayout>

</RelativeLayout>

Listview 行的 XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/row"
        android:layout_width="400dp"
        android:layout_height="wrap_content"
        android:background="@drawable/bg">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical">

            <TextView android:id="@+id/label1"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:layout_weight="1"
                      android:textSize="16sp"
                      android:layout_gravity="left|center_vertical"
                      android:paddingLeft="20dip"             
                      android:paddingRight="10dip" />

            <TextView android:id="@+id/label2"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:layout_weight="0"
                      android:textSize="16sp"
                      android:layout_gravity="right|center_vertical"
                      android:paddingLeft="10dip"             
                      android:paddingRight="10dip"/>

            <CheckBox android:id="@+id/checkbox" 
                      android:layout_width="34dip" 
                      android:layout_height="34dip"
                      android:layout_gravity="right|center_vertical"
                      android:duplicateParentState="true"
                      android:button="@drawable/checkbox_states"/>
        </LinearLayout>

</LinearLayout>

该 XML 的结果是“行”线性布局填充了列表视图宽度的 100%,即使我希望只使用 400dp。我花了 4 个小时试图把它弄好/沮丧

4

2 回答 2

2

而不是设置android:layout_width="400dp"

尝试通过以下方式使用weightSum和:weight

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/row"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="1"
        android:background="@drawable/bg"
        android:orientation="horizontal"
         >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight=".7"
             android:orientation="horizontal"
            >

            <TextView android:id="@+id/textEmp_id"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:textSize="16sp"
                          android:layout_gravity="left|center_vertical"
                          android:paddingLeft="20dip"             
                          android:paddingRight="10dip" />

                <TextView android:id="@+id/label2"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:textSize="16sp"
                          android:layout_gravity="right|center_vertical"
                          android:paddingLeft="10dip"             
                          android:paddingRight="10dip"/>

                <CheckBox android:id="@+id/checkbox" 
                          android:layout_width="34dip" 
                          android:layout_height="34dip"
                          android:layout_gravity="right|center_vertical"
                          android:duplicateParentState="true"
                          android:button="@drawable/checkbox_states"/>


        </LinearLayout>
         <View
                android:layout_width="30dp"
                android:layout_height="wrap_content"
                android:layout_weight=".3"
                />

    </LinearLayout>
于 2013-09-13T20:51:03.823 回答
1

我建议您设置 ListView Row 以匹配它的父级。您不能总是假设可用宽度为 400dp。还设置一个左右边距以获得一些空间。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row"
    android:layout_width="match_parent"
    android:layout_marginLeft="10dp"      
    android:layout_marginRight="10dp"
于 2013-09-13T20:30:28.293 回答