Liste d'état Android ListView ne montrant pas l'arrière-plan de l'élément par défaut

Avoir lu sur un certain nombre de questions liées ici à ainsi, et regarda à travers la Android docs et de la source pour essayer de comprendre cela, mais je suis perplexe, même si, étant donné que le listSelector semble être la seule à appliquer des styles sur les éléments sélectionnés, je ne suis pas choqué...

J'ai une Listview définis dans main.xml ici:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ListView  
    android:id="@android:id/list"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:fadingEdgeLength="5dp"
    android:divider="#000000"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" />
    <TextView 
    android:id="@android:id/empty"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:singleLine="false"
        android:text="@string/message_list_empty" />
</FrameLayout>

La listSelector référencé est ici (emprunté en grande partie à partir de l'Android par défaut de l'Etat Liste qui se trouve dans le SDK: /android/platforms/android-8/data/res/drawable/list_selector_background.xml):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- the window has lost focus, disable the items -->
    <item 
        android:state_window_focused="false"
        android:drawable="@drawable/shape_row_disabled" />

    <!-- the list items are disabled -->
    <item 
        android:state_enabled="false"
        android:state_focused="true" 
        android:state_pressed="true"
        android:drawable="@drawable/shape_row_disabled" />
    <item 
        android:state_enabled="false"
        android:state_focused="true" 
        android:drawable="@drawable/shape_row_disabled" />
    <item 
        android:state_enabled="false"
        android:drawable="@drawable/shape_row_disabled" />

    <!-- the list items are enabled and being pressed -->
    <item 
        android:state_focused="true" 
        android:state_pressed="true"
        android:drawable="@drawable/shape_row_transition" />
    <item 
        android:state_focused="false" 
        android:state_pressed="true"
        android:drawable="@drawable/shape_row_transition" />

    <!-- the list items are enabled and being used -->
    <item
        android:state_focused="true"
        android:drawable="@drawable/shape_row_selected" />

    <!-- the default item -->
    <item 
        android:drawable="@drawable/shape_row" />
</selector>

L'un drawable référencés sont les formes, les rectangles arrondis, comme suit:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle">
    <gradient 
        android:startColor="#EF6100"
        android:centerColor="#FF8E00" 
        android:endColor="#EF6100" 
        android:angle="270" /> 
    <corners 
        android:bottomRightRadius="7dp" 
        android:bottomLeftRadius="7dp"
        android:topLeftRadius="7dp" 
        android:topRightRadius="7dp" /> 
</shape>

Donc, le résultat final devrait être un ListView avec des articles avec un @drawable/shape_row arrière-plan par défaut, puis différents fonds de couleur en fonction de l'état. Lorsque je lance ma liste, tout fonctionne bien en termes de lorsque les états sont en activité, comme un élément reçoit le focus, est pressée, etc, mais les objets eux-mêmes ont un arrière-plan transparent quand aucune n'est sélectionnée (c'est à dire la vue par défaut de l'état). J'avais espéré que la dernière règle de la Liste des états,

<item android:drawable="@drawable/shape_row" />

de capturer cet état, mais pour quelque raison il ne fonctionne pas. J'ai déplacé les choses autour et essayé différents réglages, et de rien. Si j'ai modifier le row.xml le fichier que j'utilise pour définir les éléments de la liste dans la liste et essayez d'ajouter un spécifique à android:background que les points de @drawable/shape_row, chaque ligne obtient le bon fond, MAIS sur pressée, à se concentrer, etc les états ne parviennent pas à traiter (ou au moins, ne peut pas être vu que le fond ne change jamais).

Quelqu'un peut me pointer dans la bonne direction? Je suis SI près de le remettre au lit, mais après avoir essayé à peu près tout, juste ne pouvez pas obtenir la liste des éléments à prendre un arrière-plan par défaut ET de répondre à la mise en œuvre de l'État de la Liste via android:listSelector.

Merci,

Paul

EDIT:

Aussi juste essayé d'ajouter android:itemBackground="@drawable/shape_row" à la ListView dans main.xml et sans surprise, pas de chance (les docs de l'état, il devrait être utilisé pour spécifier les éléments de menu' origines, mais pensé qu'il valait un coup de feu avec les éléments de la liste).

Autre chose essayé, en ajoutant android:visible="true" pour chaque sélecteur et de définitions d'éléments. Le StateListDrawable docs semblent indiquer que la "Offre initiale de l'état de visibilité de la drawable; la valeur par défaut est false"mais en ajoutant cela n'a rien changé.

EDIT2: Donc, basé sur la recherche faite ci-dessous en Qberticus, il semble qu'il ne peut y avoir qu'un seul ensemble de la liste des sélecteurs par la vue, ce qui confirme le sélecteur liste de comportement. Je peux aussi confirmer que le réglage de l'android:drawSelectorOnTop ne déplacez le sélecteur EN FACE de l'élément sélectionné, mais bien sûr, cela obscurcit l'élément lui-même tel que je ne vois que le sélecteur de lui-même (qui dans mon cas est une couleur de la forme).

Voici ce que la liste ressemble avec des arrière-plans jeu:

Liste d'état Android ListView ne montrant pas l'arrière-plan de l'élément par défaut

En raison de l'arrière-plan, il n'y a aucun changement dans l'apparence lorsque des éléments sont sélectionnés. Si je change le android:drawSelectorOnTop directive vrai et sélectionnez un élément, je reçois:

Liste d'état Android ListView ne montrant pas l'arrière-plan de l'élément par défaut

Et enfin, si je mets pas d'image de fond pour les éléments de la liste, le sélecteur fonctionne comme prévu, mais bien sûr, il n'y a pas les images de fond comme la dernière règle de la StateSelector ne semble pas être suivi (ne devrait-elle pas agir comme un fourre-tout?) pour les éléments non sélectionnés sens pas coutume bien des formes arrondies:

Liste d'état Android ListView ne montrant pas l'arrière-plan de l'élément par défaut

Donc, mon problème reste le même; si je n'ai pas définir un arrière-plan pour chaque élément de la liste, je peux voir le sélecteur de travail, MAIS les éléments n'ont pas de formation lorsqu'il n'est pas sélectionné. Si j'ai mis un arrière-plan de l'élément, ils ont fière allure lorsqu'il n'est pas sélectionné, mais l'arrière-plan occulte le sélecteur. Est-il tout simplement pas possible d'avoir une forme unique élément de la liste de travail avec les sélecteurs?

Merci pour quelqu'un d'autre qui peut de poids.

source d'informationauteur Paul Mennega