2010-08-03 5 views
1

J'ai créé une boîte de réception Activité et je reflète certaines fonctionnalités de l'application Mail par défaut fournie avec Android.La définition de la couleur d'arrière-plan de l'élément de liste perd sa surbrillance

Dans Mail, la couleur d'arrière-plan d'un message qui n'a pas été lu est une couleur plus claire que le reste des éléments de la liste. Je l'ai mis en miroir en définissant l'appel de setBackgroundResource dans la méthode getView de mon adaptateur. setBackgroundColor ne fait rien.

 if (!msgSum.getIsRead()) { 
      LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background); 
      if (l != null) { 
       l.setBackgroundResource(R.color.inbox_unread); 
      } 
     } 
     else { 
      LinearLayout l = (LinearLayout) v.findViewById(R.id.inbox_background); 
      if (l != null) { 
       l.setBackgroundResource(R.color.inbox_read); 
      } 
     } 

Le problème est que les éléments perdent alors la capacité de surligner. Ce que je veux dire est, typiquement si vous faites défiler la molette de votre souris tout en utilisant l'émulateur (ou si votre appareil Android a une capacité de défilement, vous l'utilisez), les éléments de la liste deviendront jaunes comme ils ont le focus.

Comment accomplir ce que j'essaie de faire sans perdre la possibilité de mettre en évidence un élément de la liste?

Merci pour votre aide

Répondre

2

Par suggestion de Romain Guy, j'ai regardé la vidéo "Google I/O 2010 - Le monde de ListView" sur YouTube. Vers la minute 31:43, il publie un extrait de code qui résout ce problème. Vous devez cependant faire quelques modifications (je suis en développement contre 2.1). Vous devez d'abord déclarer le paramètre xmlns: android dans la balise de sélection. Dans votre code Java, vous devez appeler convertView.setBackgroundResource (R.drawable.yourselector) au lieu de setBackground (qui ne semble plus exister).

7

En effet, le point culminant est dessiné derrière les éléments de liste. Vous devez créer une liste d'états pouvant être dessinée pour l'arrière-plan de votre élément, qui définit la couleur d'arrière-plan sur transparent dans l'état sélectionné. Si vous recherchez la présentation de ListView que j'ai donnée à Google I/O 2010, vous obtiendrez un exemple de la façon de procéder.

+0

Je vais jeter un coup d'oeil. Je regarde votre vidéo "Google I/O 2010 - Le monde de ListView" sur YouTube en ce moment. Merci pour la direction – Andrew

+0

Je crois que 31:43 de cette vidéo est ce dont j'ai besoin. Où ce fichier XML devrait-il vivre? res/selector/myselector.xml? – Andrew

+0

J'ai tout fonctionne bien. Merci pour votre aide et prendre le temps d'aider la communauté Android. – Andrew

Questions connexes