Zac*_*ach 12 android android-listview android-5.0-lollipop
我正在尝试在以下条件下使用Lollipop上的列表视图控件:
注意:我被迫使用自定义列表选择器颜色,因为如果我使用白色背景,暗材料主题选择器使用主题的colorControlHighlight颜色为纹波,即40ffffff,并且不显示.
我首先尝试了以下内容:
布局xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@android:color/white" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:listSelector="@drawable/list_selector" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
list_selector xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ff0000" >
</ripple>
Run Code Online (Sandbox Code Playgroud)
并列出视图行xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal"
tools:ignore="UseCompoundDrawables" >
<ImageView
android:id="@+id/list_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我期待看到的是当我选择一个项目时,选择的项目的颜色为#ff0000.然而,这是我最终看到的:

我希望的是有点接近这种行为 - 但限制在选定的列表行中!我究竟做错了什么?
谢谢,扎克
ala*_*anv 27
您正在使用无界纹波,例如没有内容或掩模层的纹波,因此纹波投影到其父ListView的背景上.您应该设置遮罩层以约束波纹边界.
RES /绘制/ my_list_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:id="@android:id/mask">
<color android:color="@color/white" />
</item>
</ripple>
Run Code Online (Sandbox Code Playgroud)