Вот пример пространства имен app
, которое я видел из файла res/menu/main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>
Какую цель выполняет пространство имен app
? Является ли это "стандартным" пространством имен Android для Android? Имеются ли одинаковые параметры значений для одного и того же атрибута, помещенного в два разных пространства имен (например, app:showAsAction
и android:showAsAction
).
Из docs:
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
i.e., будет ли строка в приведенном выше примере означать что-то еще, если атрибут был вместо этого:
android:showAsAction="never"
Похоже, что это может быть какой-то механизм "подкласса", но я не могу найти никакой реальной документации в пространстве имен app
из источников Google/Android.
Пространство имен app
не относится к библиотеке, но используется для всех атрибутов, определенных в вашем приложении, будь то по вашему коду или импортируемым библиотекам, эффективно создавая одно глобальное пространство имен для пользовательских атрибутов - то есть атрибуты не определенная системой android.
В этом случае библиотека appcompat-v7
использует пользовательские атрибуты, зеркалирующие пространства имен android:
для поддержки предыдущих версий андроида (например: android:showAsAction
добавляется только в API11, но app:showAsAction
(предоставляется как часть вашего приложения) работает на всех уровнях API, которые делает ваше приложение) - очевидно, использование android:showAsAction
не будет работать на уровнях API, где этот атрибут не определен.
showAsAction
в пользовательском пространстве имен, что оно работаетshowAsAction
на более новых платформах и игнорируется на более старых?