Что такое префикс "android:" в модуле android framework-res
Я копирую этот код из файла styles.xml в модуле framework-res
<style name="Theme"> <item name="colorForeground">@android:color/bright_foreground_dark</item> <item name="colorForegroundInverse">@android:color/bright_foreground_dark_inverse</item> <item name="colorBackground">@android:color/background_dark</item>
,
<style name="Theme.Black"> <item name="android:windowBackground">@android:color/black</item> <item name="android:colorBackground">@android:color/black</item> </style>
Как видите, все они имеют имя атрибута, значение которого равно windowBackground. Но формар имеет android:
а последний нет. Действительно ли необходимо написать android:
приставка в андроид фреймворке?
2 ответа
Нашел это интересным вопросом и попытался исследовать, чтобы найти ответ. Это то, что я нашел..
от: http://developer.android.com/guide/topics/resources/style-resource.html
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style
name="style_name"
parent="@[package:]style/style_to_inherit">
<item
name="[package:]style_property_name"
>style_value</item>
</style>
</resources>
item - определяет одно свойство для стиля. Должен быть дочерним элементом. Атрибуты: имя Атрибут ресурса. Необходимые. Имя свойства стиля, которое нужно определить, с префиксом пакета, если необходимо (например, android: textColor).
от: http://developer.android.com/guide/topics/manifest/manifest-intro.html
Значения ресурсов Некоторые атрибуты имеют значения, которые могут отображаться для пользователей - например, метка и значок для действия. Значения этих атрибутов должны быть локализованы и, следовательно, установлены из ресурса или темы. Значения ресурса выражаются в следующем формате,
@[package:]type:name
где имя пакета может быть опущено, если ресурс находится в том же пакете, что и приложение, тип - это тип ресурса - такой как "строка" или "рисуемый" - и имя - это имя, которое идентифицирует конкретный ресурс. Например: значения из темы выражаются аналогичным образом, но с начальным '?' скорее, чем '@':
?[package:]type:name
И, наконец, я попытался дать атрибуты без android:, и он выдал исключение, хотя и успешно скомпилирован.
Доступ к ресурсам платформы
Android содержит ряд стандартных ресурсов, таких как стили, темы и макеты. Чтобы получить доступ к этим ресурсам, укажите ссылку на ресурс с именем пакета Android. Например, Android предоставляет ресурс макета, который можно использовать для элементов списка в ListAdapter
:
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));
В этом примере simple_list_item_1 - это ресурс макета, определенный платформой для элементов в ListView
, Вы можете использовать это вместо создания собственного макета для элементов списка. (Подробнее об использовании ListView
см. руководство по просмотру списка.)