Что такое "приложение" 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.

482   1  

1 ответ:

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

в этом случае appcompat-v7 библиотека использует пользовательские атрибуты, отражающие android: пространства имен для поддержки предыдущих версий android (например:android:showAsAction был добавлен только в API11, но app:showAsAction (предоставляется как часть вашего приложения) работает на всех уровнях API, которые делает ваше приложение) - очевидно, используя android:showAsAction не будет работать на уровнях API, где этот атрибут не определен.

Comments

    Ничего не найдено.