Что означает префикс «android:» в модуле android framework-res - PullRequest
6 голосов
/ 13 января 2012

Я копирую этот код из файла 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: в платформе Android?

Ответы [ 2 ]

7 голосов
/ 13 января 2012

Нашел, что это интересный вопрос, и попытался найти ответ. Это то, что я нашел.

от: 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

где имя пакета может быть опущено, если ресурс находится в том же пакете, что и приложение, type - это тип ресурса - например, «string» или «drawable» - и name - это имя, которое идентифицирует конкретный ресурс. Например: Значения из темы выражены аналогичным образом, но с начальным '?' вместо '@':

?[package:]type:name

И, наконец, я попытался присвоить атрибуты без android: и он выдал исключение, хотя и успешно скомпилирован.

1 голос
/ 13 января 2012

Доступ к ресурсам платформы

Android содержит ряд стандартных ресурсов, таких как стили, темы и макеты.Чтобы получить доступ к этим ресурсам, укажите в ссылке на ресурс имя пакета Android.Например, Android предоставляет ресурс макета, который можно использовать для элементов списка в ListAdapter:

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));

В этом примере simple_list_item_1 - это ресурс макета, определенный платформой для элементов в ListView.Вы можете использовать это вместо создания собственного макета для элементов списка.(Подробнее об использовании ListView см. В руководстве по просмотру списка.)

...