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