Вот пример 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 XML? Доступны ли одинаковые параметры значения для одного и того же атрибута в двух разных пространствах имен (например, app:showAsAction
и android:showAsAction
).
Из документов :
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
то есть, будет ли строка в вышеприведенном примере означать что-то еще, если бы вместо этого был указан атрибут:
android:showAsAction="never"
Похоже, это может быть какой-то механизм «подкласса», но я не могу найти никакой реальной документации по app
пространству имен из источников Google / Android.
showAsAction
в пользовательском пространстве имен, что оно работает должным образом на новых платформах и игнорируется на старых?android:
версий.showAsName
атрибут не поддерживается в старой библиотеке, как же с помощью пользовательского пространства имен позволяют платформе знать диапазон вариантов возможного значения (ifRoom
,never
и т.д.), и знать , как интерпретировать эти варианты? Я предполагаю, что «атрибуты, которые не существуют» означает атрибуты, для которых не существует реализации в библиотеке. Перестановкаandroid:
дляapp:
едва ли кажется полным обходным. Я что-то упускаю?app:showAsName
) и все его возможные значения включаются в ваше приложение, когда вы включаетеappcompat-v7
библиотеку (которая определяет его в своемattrs.xml
файле). 2) Библиотека AppCompat (в частности, ActionMenuView, которая автоматически используется при вашем использованииActionBarActivity
) анализирует и использует,app:showAsAction
чтобы правильно отображать элементы одинаково на всех уровнях API. Это, безусловно, требует как XML, так и кода для совместной работы.Вы можете получить некоторые объяснения по этой ссылке
Пространство имен XML
источник