我有一个简单的列表视图,我已经为分隔符定义了一个自定义drawable。我已将分隔符高度定义为1dp。列表视图位于片段内。
<shape
android:shape="line" >
<stroke
android:color="@color/custom_color" />
<gradient android:height="1dp" />
</shape>
除了L.
之外,它适用于所有Android版本我缺少什么?
答案 0 :(得分:9)
您应该使用android:shape="rectangle"
代替android:shape="line"
使其适用于每个Android版本...(也将stroke
更改为solid
)
<shape
android:shape="rectangle" >
<solid android:color="@color/custom_color" />
<gradient android:height="1dp" />
</shape>
玩得开心!
答案 1 :(得分:8)
无论如何,通过覆盖isEnabled()来禁用您的列表项以返回false? Android L中存在更改(错误?),如果项目被禁用,则会导致列表项目分隔符被隐藏。我遇到了同样的问题,我的列表分隔符在L以外的所有内容中工作,结果证明是原因。
以下是更多关于此问题的帖子,以及Google开设的一个问题:
点评:Disappearing divider in ListView when ArrayAdapter.isEnabled returns false
How to add dividers between disabled items in ListView? - Lollipop
https://code.google.com/p/android/issues/detail?id=83055
如果是这种情况,听起来您可能需要手动使用自定义视图绘制分隔符,并在列表中将分隔符设置为null。我会尝试同样的。
答案 2 :(得分:6)
更新回答
经过进一步测试后,看起来分隔线只会显示分隔线的高度严格>>是否比ListView设置的dividerHeight
高。例如:
custom_divider.xml
(请注意,分隔符高度由android:width
)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<stroke
android:width="1dp"
android:color="$ffff0000" />
</shape>
布局xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:divider="@drawable/custom_divider"
android:dividerHeight="2dp"/>
......会奏效吗?但这不会:
custom_divider.xml
(请注意,分隔符高度由android:width
)
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<stroke
android:width="1dp"
android:color="$ffff0000" />
</shape>
布局xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:divider="@drawable/custom_divider"
android:dividerHeight="1dp"/>
我的猜测是谷歌搞砸了绘制Listview分隔线的优化,如果没有足够的空间,就不会绘制它们。
原帖
看起来您需要在ListView上设置dividerHeight
,并且可以在分区器上绘制抽头width
,以便在Android 5上运行。
示例:
custom_divider.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<stroke
android:width="10dp"
android:color="$ffff0000" />
<gradient android:height="1dp" />
</shape>
布局xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:divider="@drawable/custom_divider"
android:dividerHeight="20dp"/>
答案 3 :(得分:1)
高度属性不是渐变标记下的属性。使用大小attr,如下所示。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@android:color/holo_blue_dark" />
<size android:height="1px" />
</shape>