2009-06-19 4 views
6

Extrait du livre O'Reilly "Application Development Android" par Rick Rogers, John Lombardo, Zigurd Mednieks & Blake Meike page 23:@ dans AndroidManifest.xml fichier

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 

De la page 44:

Quelle est la signification de @ dans chacun des fragments ci-dessus?
<application android:icon="@drawable/icon2"> 

Quelle est la signification du @ dans chacun des fragments ci-dessus?

Répondre

7

Dans ce cas:

android:layout_width="fill_parent" 

la valeur de l'attribut, android:layout_width, est spécifié directement à l'intérieur des guillemets, fill_parent. Dans l'autre cas:

android:text="@string/hello" 

la valeur de l'attribut, android:text="@string/hello", est spécifié ailleurs. Ceci est indiqué par le @ au début de la chaîne. Dans cet exemple, il s'agit de @string/hello. La valeur est dans une ressource.

Dans la section "Valeurs de ressources" du The AndroidManifest.xml File du site Android Developers. Trouvé à partir du lien dans allclaws réponse.

valeurs de ressources sont exprimées dans le format suivant,

@ [package:] Type: nom

où peut être omis le nom du package si la ressource est dans le même paquet que l'application, type est un type de ressource - comme "chaîne" ou "drawable" - et le nom est le nom que identifie la ressource spécifique.

6

je tends à penser comme une abréviation qui a à voir avec où les ressources se trouvent, donc:

Dans une configuration normale, il serait quelque chose comme:

@ drawable/icône =/PROJECT_ROOT/res/drawable/icon.png

@ string/bonjour = /PROJECT_ROOT/res/values/strings.xml (un élément nommé "bonjour")

Cela semble être du mal supplémentaire, mais il fonctionne réellement plutôt bien. Il facilite également l'internationalisation et les différentes tailles d'écran. Vous venez de déclarer des fichiers de ressources supplémentaires pour différents codes de pays et mises en page et Android choisit la meilleure correspondance pour vous.

Ce document sur internationalization here pourrait expliquer pourquoi ils ont décidé de le faire de cette façon.

Questions connexes