Что такое "приложение" Android XML пространство имен?
вот пример app
пространство имен, которое я видел от res/menu/main.xml
file
<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 XML? Доступны ли одинаковые параметры значений для одного и того же атрибута, помещенного в два разных пространства имен (например,app:showAsAction
и android:showAsAction
).
С docs:
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
т. е., будет ли строка в приведенном выше примере означать что-то еще, если атрибут был вместо этого:
android:showAsAction="never"
это почти похоже на то, что это может быть какой-то механизм "подклассов", но я не могу найти никакой реальной документации по app
пространство имен из источников Google / Android.
1 ответ:
The
app
пространство имен не является специфичным для библиотеки, но оно используется для всех атрибутов, определенных в вашем приложении, будь то ваш код или библиотеки, которые вы импортируете, эффективно создавая единое глобальное пространство имен для пользовательских атрибутов, т. е. атрибутов, не определенных системой android.в этом случае
appcompat-v7
библиотека использует пользовательские атрибуты, отражающиеandroid:
пространства имен для поддержки предыдущих версий android (например:android:showAsAction
был добавлен только в API11, ноapp:showAsAction
(предоставляется как часть вашего приложения) работает на всех уровнях API, которые делает ваше приложение) - очевидно, используяandroid:showAsAction
не будет работать на уровнях API, где этот атрибут не определен.
Comments