web-dev-qa-db-fra.com

Comment définir une balise integer sur un widget dans un fichier de présentation XML?

J'ai une mise en page simple, mais je ne peux que définir une balise string. Comment définir une balise entière?

<ImageView
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:tag="1"
  Android:src="@drawable/image" />

METTRE À JOUR

J'ai découvert comment définir les balises Integer dans une mise en page XML. Nous devons spécifier une variable entière dans tout fichier de ressources xml. Cela devrait ressembler à ça:

res/values ​​/ value.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="int1">15</integer>
<integer name="int2">1</integer>
</resources>

Et maintenant, nous sommes libres d'utiliser "@ entier/int1" ou "@ entier/int2" comme balises pour nos widgets XML, par exemple:

<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:tag="@integer/int2"
Android:src="@drawable/image" />

Cependant, dans mon cas, j'ai préféré définir les balises par programme :)

20
Eugene Chumak

En XML, vous ne pouvez définir que String. Mais dans le code, vous pouvez utiliser View.setTag(int value); car il faut Object. Pour lire une valeur, vous devez la convertir en Integer int value = (Integer)view.getTag();.

15
zoki

À partir de la modification de l'auteur, j'ai tenté d'utiliser @integer/int2 pour définir la balise en tant qu'entier, mais il semble toujours que getTag() renvoie la balise en tant que String (au moins en Jellybean). Integer.parseInt(String) peut convertir une String en une Integer et @integer/int2 peut valider que votre tag est une Integer correcte. Donc, si vous voulez mettre une Integer dans une balise via XML, c'est probablement la meilleure route. Inconvénient, puisqu'il utilise parseInt, cela prend probablement un peu plus de temps que de l'avoir stocké comme un entier tout le temps.

4
Dandre Allison

J'ai utilisé ce qui suit pour configurer la balise au format XML et la manipuler plus tard dans le code:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="item_tag">1</string>
</resources>

<!-- TextView with Tag -->
<TextView
Android:id="@+id/item_with_tag"
Android:tag="@string/item_tag"/>

// retrieve the tag
int itemTag = Integer.valueOf((String) textView.getTag()); // itemTag == 1
2
Ray Hunter

Fournissez une balise pour cette vue contenant une chaîne, à récupérer ultérieurement avec View.getTag() ou à rechercher avec View.findViewWithTag().

Doit être une valeur de chaîne, en utilisant '\\;' pour échapper des caractères tels que '\\n' ou '\\uxxxx' pour un caractère unicode.

Pour plus d'informations, allez sur Android: tag

0
OguzOzkeroglu