2009-06-19 11 views
6

Desde el libro de O'Reilly "Desarrollo de aplicaciones Android" por Rick Rogers, John Lombardo, Zigurd Mednieks & Blake Meike, página 23:@ en el archivo AndroidManifest.xml

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

De la página 44:

<application android:icon="@drawable/icon2"> 

¿Cuál es el significado de @ en cada uno de los fragmentos anteriores?

Respuesta

7

En este caso:

android:layout_width="fill_parent" 

el valor para el atributo, android:layout_width, se especifica directamente dentro de las comillas, fill_parent. En el otro caso:

android:text="@string/hello" 

el valor para el atributo, android:text="@string/hello", se especifica en otro lugar. Esto se indica mediante el @ al comienzo de la cadena. En este ejemplo, es @string/hello. El valor está en un recurso.

De la sección "Valores de recursos" en The AndroidManifest.xml File del sitio de Desarrolladores de Android. Se encuentra desde el enlace en allclaws respuesta.

valores de los recursos se expresan en el siguiente formato,

@ [paquete:] tipo: nombre

donde el nombre del paquete se puede omitir si el recurso está en el mismo paquete como la aplicación, tipo es un tipo de recurso - como "cadena" o "dibujable" - y el nombre es el nombre que identifica el recurso específico.

6

tiendo a pensar que es una abreviatura que tiene que ver con el lugar donde se encuentran los recursos, por lo que:

En una configuración normal, sería algo así como:

@ dibujable icono/=/PROJECT_ROOT/res/estirable/icon.png

@ string/hola = /PROJECT_ROOT/res/values/strings.xml (un elemento llamado "hola")

Esto parece como problema adicional, pero realmente funciona muy bien. También hace que la compatibilidad con la internacionalización y los diferentes tamaños de pantalla sean bastante fáciles. Simplemente declara archivos de recursos adicionales para diferentes códigos de país y diseños y Android elige la mejor opción para usted.

Este documento acerca de internationalization here podría dejar más claro por qué decidieron hacerlo de esa manera.

Cuestiones relacionadas