@ в файле AndroidManifest.xml - PullRequest
6 голосов
/ 19 июня 2009

Из книги О'Рейли "Разработка приложений для Android" Рика Роджерса, Джона Ломбардо, Зигурда Медниекса и Блейка Майке, стр. 23:

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

со страницы 44:

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

Что означает @ в каждом из приведенных фрагментов?

Ответы [ 3 ]

7 голосов
/ 19 июня 2009

В этом случае:

android:layout_width="fill_parent"

значение атрибута, android:layout_width, указывается непосредственно внутри кавычек, fill_parent. В другом случае:

android:text="@string/hello"

значение атрибута, android:text="@string/hello", указано в другом месте. На это указывает @ в начале строки. В этом примере это @string/hello. Значение в ресурсе.

Из раздела «Значения ресурсов» в Файл AndroidManifest.xml с сайта разработчиков Android. Найдено по ссылке в allclaws answer.

Значения ресурса выражены в следующий формат,

@ [пакет:] тип: имя

где имя пакета может быть опущено если ресурс находится в том же пакете как приложение, тип является типом ресурс - такой как "строка" или "drawable" - и имя это имя, которое идентифицирует конкретный ресурс.

6 голосов
/ 19 июня 2009

Я склонен думать об этом как об аббревиатуре, относящейся к расположению ресурсов, поэтому:

В обычной настройке это будет что-то вроде:

@ drawable / icon = /PROJECT_ROOT/res/drawable/icon.png

@ string / hello = /PROJECT_ROOT/res/values/strings.xml (элемент с именем "hello")

Это кажется дополнительной проблемой, но на самом деле это работает довольно хорошо. Это также облегчает поддержку интернационализации и экранов разных размеров. Вы просто объявляете файлы дополнительных ресурсов для различных кодов стран и макетов, и Android выбирает лучшее для вас соответствие.

Этот документ о интернационализации здесь может прояснить, почему они решили сделать это таким образом.

0 голосов
/ 19 июня 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...