74 votes

Définition de la barre de menu Arrière-plan et persistance Android - L'utilisation de l'attribut dans les versions antérieures provoque un blocage - Existe-t-il une approche par thème / modèle

Dans Android 3.0, la notion de "checked" peut être rendu à l'aide d'un "activé" d'arrière-plan. Cela vous donne la persistance de la barre que vous voyez lorsque vous appuyez sur une liste fragment, le contexte pour le fragment de la liste de droite (par exemple, en tapant sur un dossier dans Gmail met en évidence que le dossier et ouvre une autre liste fragment de montrer les conversations dans ce dossier).

Par exemple, le fragment échantillons montrent des trucs comme:

setListAdapter(new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));

Cette ressource (android.R.layout.simple_list_item_activated_1) est nouveau pour Android 3.0. Ce qui le rend "activé" est:

android:background="?android:attr/activatedBackgroundIndicator"

Que la valeur de l'attribut est nouveau pour Android 3.0 et vous fera planter si vous essayez de l'utiliser sur des versions antérieures d'Android, à partir de ce que je peux dire. Je veux définir l'arrière-plan de cette magie de la valeur de la 3.0/grand/paysage combinaison, et de sauter à l'autre.

Je peux accomplir cela par le fait d'avoir deux versions distinctes de la mise en page, l'un dans un -v11 des ressources, un ensemble dans un ensemble de ressources. C'est un peu moins SEC que je le voudrais, cependant, puisque l'essentiel de la mise en page est la même, avec cette seule attribut soit inclus ou ignorés.

J'ai pris un coup de couteau à essayer d'utiliser drawable des ressources d'alias, alors l' android:background pourrait se référer à l'alias et alias gérer l' -v11 de la différenciation, mais <bitmap> un drawable ne semble pas aimer android:src="@null".

Je pense qu'il y a des styles et des thèmes de l'approche à ce problème, mais depuis je n'ai jamais entièrement enveloppé ma tête autour de ceux (une de mes plus embarrassant Android les lacunes dans les connaissances), je ne suis pas complètement sûr de ce à faire.

Quelqu'un a travaillé sur un modèle pour l'utilisation de "activé" à la 3.0 et de sauter sur la pré-3.0, au-delà des modèles différents?

Merci!

57voto

Al Sutton Points 3025

Les styles sont ton ami ....

Ont deux répertoires de valeurs, l’un est valeurs-v11, l’autre les valeurs par défaut.

Chaque répertoire de valeurs contient un fichier styles.xml, la différence étant celle que contiennent les valeurs par défaut;

 <style name="listViewActivatedStyle"/>
 

Les valeurs-v11 contient;

 <style name="listViewActivatedStyle">
   <item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
 

Ensuite, vous pouvez avoir une seule mise en page qui utilise;

 style="@style/listViewActivatedStyle"
 

et celui qui convient est sélectionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X