目标
我希望Listview在活动中填充屏幕的宽度(以便列表视图滚动条显示在屏幕边缘)。
然后我希望listview Row不填充100%的宽度。例如,我希望它只有400dp宽。
问题
列表视图行总是占据列表视图宽度的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的结果是“row”linearlayout填充了listview宽度的100%,即使我只希望使用400dp。我花了4个小时试图让它变得正确/沮丧
答案 0 :(得分: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>
答案 1 :(得分:1)
我建议您将ListView行设置为与其父级匹配。 您不能总是假设可用宽度为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"