sr0*_*r09 9 android android-layout android-listview android-5.0-lollipop
我有一个简单的列表视图,我已经为分隔符定义了一个自定义drawable.我已将分隔符高度定义为1dp.列表视图位于片段内.
<shape
android:shape="line" >
<stroke
android:color="@color/custom_color" />
<gradient android:height="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
它适用于除L以外的所有Android版本.
我缺少什么?
你应该使用android:shape="rectangle"
而不是android:shape="line"
使它适用于每个Android版本...(也stroke
改为solid
)
<shape
android:shape="rectangle" >
<solid android:color="@color/custom_color" />
<gradient android:height="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
玩得开心!
在任何情况下,您的列表项是否通过重写isEnabled()来禁用,以返回false?Android L中存在更改(错误?),如果项目被禁用,则会导致列表项目分隔符被隐藏.我遇到了同样的问题,我的列表分隔符在L以外的所有内容中工作,结果证明这是原因.
以下是一些讨论过的帖子,以及Google开放的问题:
注释:当ArrayAdapter.isEnabled返回false时,ListView中的消除分隔符
如何在ListView中的禁用项之间添加分隔符? - 棒棒糖
https://code.google.com/p/android/issues/detail?id=83055
如果是这种情况,听起来您可能需要使用自定义视图手动绘制分隔符,并在列表中将分隔符设置为null.我会尝试同样的.
更新的答案
进一步测试后,看起来分隔符只显示分隔符的高度是否严格小于dividerHeight
ListView 的设置.例如:
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>
Run Code Online (Sandbox Code Playgroud)
布局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"/>
Run Code Online (Sandbox Code Playgroud)
...将工作.但这不会:
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>
Run Code Online (Sandbox Code Playgroud)
布局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"/>
Run Code Online (Sandbox Code Playgroud)
我的猜测是谷歌搞砸了绘制Listview分隔线的优化,如果没有足够的空间,就不会绘制它们.
原帖
看起来你需要设置dividerHeight
ListView和width
分隔符的笔划drawable,以便在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>
Run Code Online (Sandbox Code Playgroud)
布局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"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8830 次 |
最近记录: |