I have 2 questions regarding a ListView in Android:
How can I get the color of the listview's focused row ? I tried to use the ListView.getSelector() method, which according to its documentation should give me what I'm looking for, but it's giving me a Drawable object which I don't know how to retrieve the color from (if possible...).
How can I set the color of the listview's focused row ? Here I tried to use the setSelector() method on the listview, passing it a ColorDrawable object, but the result of doing it is that the whole background of the list view is painted in that color... and this is not what I wanted of course...
The list selector drawable is a
StateListDrawable — it contains reference to multiple drawables for each state the list can be, like selected, focused, pressed, disabled...
While you can retrieve the drawable using
getSelector(), I don't believe you can retrieve a specific
Drawable from a
StateListDrawable, nor does it seem possible to programmatically retrieve the colour directly from a
As for setting the colour, you need a
StateListDrawable as described above. You can set this on your list using the
android:listSelector attribute, defining the drawable in XML like this:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:state_focused="true" android:drawable="@drawable/item_disabled" /> <item android:state_pressed="true" android:drawable="@drawable/item_pressed" /> <item android:state_focused="true" android:drawable="@drawable/item_focused" /> </selector>