小编典典

什么是“app”Android XML 命名空间?

all

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:showAsActionandroid:showAsAction)中的相同属性。

文档
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]

即,如果属性是,上面示例中的行是否意味着其他内容:

android:showAsAction="never"

它几乎看起来可能是某种“子类化”机制,但我似乎无法app从 Google/Android 源代码中找到有关名称空间的任何真实文档。


阅读 61

收藏
2022-08-24

共1个答案

小编典典

命名空间不是特定于库app,而是用于您的应用程序中定义的所有属性,无论是由您的代码还是由您导入的库,有效地为自定义属性创建一个全局命名空间 - 即,未由
android 系统定义的属性.

在这种情况下,appcompat-v7库使用镜像android:命名空间的自定义属性来支持早期版本的
android(例如:android:showAsAction仅在 API11
中添加,但app:showAsAction(作为应用程序的一部分提供)适用于您的应用程序所做的所有 API 级别) - 显然在未定义该属性的 API
级别上使用android:showAsAction将不起作用。

2022-08-24