Question

AVERTISSEMENT: Le XML dans cette question est faux, lisez la réponse avant de vous confondre!


Je me cogne la tête sur le mur depuis un moment maintenant. Les messages suivants ont mis en lumière le sujet, mais n'ont pas résolu mon problème: Liste d'état Android ListView n'affiche pas l'arrière-plan de l'élément par défaut et Arrière-plan de l'élément ListView via le sélecteur personnalisé

L'arrière-plan approprié à neuf patch s'affiche parfaitement lorsque je sélectionne l'élément de liste, mais je ne peux pas obtenir l'arrière-plan par défaut de neuf patch à afficher initialement. Il me semble que je dois définir l'arrière-plan de l'élément par défaut d'une manière ou d'une autre, mais je ne peux pas comprendre comment le faire.

Vue de liste:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/shopListHeader"
    />
  <ListView
    android:id="@+id/shopList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="0px"
    android:divider="#FFFFFFFF"
    android:listSelector="@drawable/shop_list_selector"
    />
</LinearLayout>

Sélecteur:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

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

    <item
        android:state_selected="true"
        android:textColor="#FFFFFFFF" />
</selector>

Arrière plan:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <item
      android:state_selected="true"
      android:drawable="@android:color/transparent" />

    <item
        android:drawable="@drawable/shop_list_item" />
</selector>

Comme vous pouvez le voir, j'ai abaissé les exemples des références.

Vous pouvez également remarquer que le sélecteur de fond n'est référencé nulle part. J'ai commencé à le lancer dans des endroits aléatoires (si l'application a compilé, l'addition n'avait aucun effet ou provoquer une fermeture forcée)

J'ai également tenté d'empêcher la couleur du texte de passer au noir et au gris lorsqu'un élément est sélectionné mais pas enfoncé (peut être fait en faisant défiler la liste). Étant donné que mon arrière-plan sera noir au centre, le texte devient partiellement invisible lorsqu'il est sélectionné. Cet ajout (le dernier nœud d'article dans le sélecteur) ne fait rien, pour autant que je sache.

Quelqu'un a-t-il une réflexion sur le fonctionnement de cette fonctionnalité ridiculement consommatrice de temps?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top