Standard ListView
selector in android L developer preview uses colorControlHighlight
for the ripple effect on touch and has a transparent background in unfocused state.
I would like to define a ListView
item that has a colored background and still shows the ripple effect on touch with the same highlight color. Now, if I define the following drawable:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:drawable="@color/my_background_color"/>
</ripple>
it works, but the ripple starts in the middle of the ListView
item, regardless of the touch position. If I use the same background outside of the ListView
, e.g. for a LinearLayout
, it works like expected (the ripple starts on the touch position).
I've managed to get individually colored list items while maintaining the ripple effect. Set the background of your list items using whatever adapter you have and set the listview to show the selector on top:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="true" />
This will draw the ripple effect above the background.