什么是“应用程序”的Android XML名称空间?
以下是我从res/menu/main.xml
文件中看到的app
名称空间示例
<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=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
也就是说,如果这个属性是相反的,那么上面例子中的那一行代表了其他的意思:
android:showAsAction="never"
它几乎看起来可能是某种“子类”机制,但我似乎无法从Google / Android来源find有关app
名称空间的任何真实文档。
app
名称空间并不是特定于某个库的,但它用于应用程序中定义的所有属性,无论是由您的代码还是由您导入的库,有效地为自定义属性制作单个全局名称空间 – 即未由android定义的属性系统。
在这种情况下, appcompat-v7
库使用镜像android:
namespace的自定义属性来支持以前版本的android(例如: android:showAsAction
仅在API11中添加,而app:showAsAction
(作为应用程序的一部分提供)适用于所有API级别的应用程序) – 显然,使用android:showAsAction
不适用于未定义该属性的API级别。