我如何在图像中显示填充列表项目。 我想在布局中制作分隔线,如图所示。
这是我的列表片段代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp">
<ListView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/listV_main"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"/>
这是我的列表部分代码
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp">
<include
android:id="@+id/list_item_section_text"
layout="@android:layout/preference_category"
/>
这是我的清单项目代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:adjustViewBounds="true"
android:paddingRight="?android:attr/scrollbarSize"
>
<ImageView
android:id="@+id/showlist_item_entry_drawable"
android:layout_width="82dp"
android:adjustViewBounds="true"
android:layout_height="68dp"
android:scaleType="fitXY"
android:paddingLeft="9dp"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="6dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1"
>
<TextView android:id="@+id/list_item_entry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<TextView android:id="@+id/list_item_entry_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/list_item_entry_title"
android:layout_alignLeft="@id/list_item_entry_title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:singleLine="true"
android:textColor="?android:attr/textColorSecondary" />
</RelativeLayout>
答案 0 :(得分:207)
使用'插入' .....
(list_divider.xml)
<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="50dp"
android:insetRight="50dp" >
<shape>
<solid android:color="@color/orange" />
<corners android:radius="2.0dip" />
</shape>
</inset>
并在列表视图中添加如下...
<ListView
android:dividerHeight="2dp"
android:divider="@drawable/list_divider"
...
/>
您可以根据需要设置插入值...
<强>更新强>
正如@Giulio Piancastelli所指出的,如果列表容器的背景与列表项的背景不同,那么您可以使用'layer-list' ......
(list_divider.xml)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="@color/list_background" />
</shape>
</item>
<item
android:left="10dp"
android:right="10dp">
<shape android:shape="rectangle" >
<solid android:color="@color/divider_color"/>
</shape>
</item>
</layer-list>
并在列表视图中添加如下...
<ListView
android:dividerHeight="2dp"
android:divider="@drawable/list_divider"
...
/>
答案 1 :(得分:18)
你需要填充分隔线吗?创建自定义可绘制形状:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:left="10dp"
android:right="10dp">
<shape android:shape="rectangle" >
<solid android:color="@android:color/black" />
</shape>
</item>
</layer-list>
在xml中设置为ListView的分隔符:
<ListView
android:dividerHeight="2dp"
android:divider="@drawable/custom_divider"
...
/>
<强> UPD 强>
我在xml中只有ListView
:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="2dp"
android:divider="@drawable/line"
/>
line.xml
中的drawable
分隔符:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:left="10dp"
android:right="10dp">
<shape android:shape="rectangle" >
<solid android:color="@android:color/black" />
</shape>
</item>
</layer-list>
不要对代码中的ListView
进行任何修改。如果资源构建错误,您可以尝试使用 Clean 。
答案 2 :(得分:4)
正如@Giulio Piancastelli在@ASP回答中提到的那样,当列表容器的背景颜色与列表中的行不同时,<inset>
失败。一种解决方案是使用<layer-list>
,如下所示:
//This item is to overlay the container colour with the row background colour
<item
android:left="0dp"
android:right="0dp">
<shape android:shape="rectangle" >
<solid android:color="@color/row_background" />
</shape>
</item>
//This item is the divider, put it at bottom so it will overlay the background colour
<item
android:left="92dp"
android:right="0dp">
<shape android:shape="rectangle" >
<solid android:color="@color/divider
</shape>
</item>
然后您可以将其设置为分隔符,因为大多数答案都表明:
<ListView
android:dividerHeight="2dp"
android:divider="@drawable/layer_list"
...
/>
答案 3 :(得分:0)
在listitem中,将paddingtop作为
添加到主布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:padding="10dp"
....// Remaining fields
>
... //Remaining items
</LinearLayout>
答案 4 :(得分:0)
这应该是这个问题的替代解决方案:
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:background="color/secondary_text"
android:layout_marginTop="16dp" />
答案 5 :(得分:-4)
设置列表项分隔符高度和颜色:
<ListView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/listV_main"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:divider="@android:color/darker_gray"
android:dividerHeight="1dp"/>