How to have a android:background color and still retain the gray focus highlight for lists in Android?

888 Views Asked by At

I'm porting my app to Chrome OS and there are a few places in the app where arrow key navigation works, but the current focused element is not highlighted in any way. I've found that whenever I set a background color for an element like

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        ...
        android:background="@color/white" >

    ...

</LinearLayout>

then the default highlighting of the focused element will not show. Removing this will show the default background (which is not always the same as what I want).

Also, in cases where I use a selector in a ListView, the background is in front of the intended highlighting drawable (which can be seen if the color is somewhat transparent).

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_mediumAnimTime" >
    <item android:state_pressed="false" android:state_focused="true" android:drawable="@drawable/list_focused" />
    <item android:state_pressed="true" android:drawable="@drawable/list_pressed" />
    <item android:drawable="@color/white" />

</selector>

This is even more strange since I was under the (possibly incorrect) impression that selectors will only pick one of the items.

I can't post too much code since this is work code, but this is happening throughout the app wherever there's a list.

1

There are 1 best solutions below

0
On BEST ANSWER

If you have a selector defined for the views in your ListView, set the drawSelectorOnTop property to true on your ListView, as per the docs.