Changer la couleur d'éléments dans ListView - Android
J'ai une ListView et je voudrais changer la couleur de l'élément sélectionné dans la liste. Je peux changer la couleur de l'élément sélectionné ci-dessous, mais comment puis-je revenir (ou modifier) la couleur de tous les autres éléments de retour à leur couleur d'origine?
@Override
public void onListItemClick(ListView parent, View v, int position, long id)
v.setBackgroundColor(Color.CYAN);
}
J'ai tenté de changer la couleur de la mère, mais elle ne change pas la couleur des objets:
@Override
public void onListItemClick(ListView parent, View v, int position, long id)
parent.setBackgroundColor(Color.WHITE);
v.setBackgroundColor(Color.CYAN);
}
ListView:
<ListView
android:id="@id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:drawSelectorOnTop="false" />
Chaque élément est:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/contacts_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/linear"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text=""/>
<TextView
android:id="@+id/lastname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginLeft="3sp"
android:text=""/>
<TextView
android:id="@+id/firstname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginLeft="3sp"
android:text=""/>
<TextView
android:id="@+id/sipExt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="#59696E"
android:gravity="right"
android:layout_marginRight="9dp"
android:textStyle="italic"
android:text=""/>
</LinearLayout>
<TextView
android:id="@+id/alias"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="#a69d86"
android:textStyle="italic"
android:layout_below="@id/linear"
android:text=""/>
- avez-vous une coutume listview?
- Oui, je viens d'ajouter les fichiers xxml
InformationsquelleAutor ono | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Il ya bonne façon de le faire est de définir une coutume
Selector
et définissez la couleur (Drawable) et de définir les couleurs que vous voulez dans chaque état. Voir ce lien pour plus de détails:Ne pouvez pas ajouter personnalisé sélecteur à la liste
et ici:
Android ListView élément sélectionné séjour en surbrillance
-- il y en a beaucoup d'autres postes sur DONC en ce qui concerne cela.
Si vous voulez garder votre conception actuelle, vous pouvez essayer quelque chose comme ceci:
getView(...)
méthode?onListItemClick(...)
que vous appelez " des parents.setSelected(position) " ou quelque chose comme ça.Utilisation d'un sélecteur.
À la vue de mise en page personnalisée xml
bkg.xml dans le dossier drawable.
Personnaliser le ci-dessous en fonction de vos besoins
pressed.xml dans le dossier drawable
normal.xml dans le dossier drawable
android:background="@drawable/bkg.xml"
aller avec la liste mise en page?android:background="@drawable/bkg.xml"
vient votre mise en page personnalisée pour être gonflé pour chaque ligne. Pour la dernière xml dans votre question. Vous ne pouvez pas accepter deux réponses. Si l'autre réponse aide à aller de l'avant marque comme acceptée.Vous pouvez essayer ce qui suit pour récupérer tous les éléments du parent contenant les points de vue
et puis de définir la couleur d'arrière-plan de tous les éléments
Vous avez juste besoin d'utiliser CustomAdapter pour cela, et à l'intérieur, il vous faut déclarer un mondial int variable qui contient les index de Position et à l'intérieur de méthode getView de l'adaptateur, il suffit de cocher correspondre à la Position sélectionnée à la position de la valeur de la méthode getView et de modifier la ligne de fond de la vue en conséquence.