我有一个简单的RecyclerView,其中每行显示一行文字。每行都是可选的,所以我想使用
android:background="?attr/selectableItemBackground"
问题是RecyclerViews不允许使用分隔符;而我想要分隔线。因此我需要一个如下背景(称为bottom_line.xml
)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="1dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#FF000000" />
<solid android:color="#00FFFFFF" />
<padding android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp" />
</shape>
</item>
</layer-list>
我的问题是如何将bottom_line.xml
与?attr/selectableItemBackground
结合起来创建一个带有涟漪的最终绘画? (我试图避免在LinearLayout中使用TextView)
答案 0 :(得分:0)
您可以通过多种方式添加分隔符。
一种方法是你的单元格布局中可以有一个分隔符,它只是一个高度为1dp和灰色背景的视图。所以你不必担心组合背景drawables。
答案 1 :(得分:0)
RecyclerView
确实允许分隔符。
添加DividerItemDecoration
类来实现绘图,例如https://gist.github.com/alexfu/0f464fc3742f134ccd1e
在addItemDecoration
上使用RecyclerView
。
myRecyclerView.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL_LIST, R.drawable.divider));
设置分割器可绘制,此示例具有左右插图和渐变
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="16dp"
android:insetRight="16dp">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="@color/dividerEdge" android:centerColor="@color/dividerCenter" android:endColor="@color/dividerEdge" android:angle="0" />
</shape>
</inset>
或者,您可以通过添加:
为XML添加连锁效果(API 21+)<ripple android:color="@color/somecolor">
<item> ... </item>
</ripple>
虽然看起来你可能不需要这个......