这是我从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:showAsAction
是用来做什么的?它是一个“标准”的Android XML命名空间吗?如果将两个不同命名空间中相同属性(例如app:showAsAction
和android:showAsAction
)中的相同值选项放置在其中一个命名空间中,那么另一个命名空间中会有相同的选项吗?根据文档:
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
也就是说,如果属性改为:app:showAsAction
,那么上面例子中的行是否表示其他东西?android:showAsAction="never"
看起来这几乎像是某种“子类化”机制,但我似乎找不到有关Google/Android来源中app
命名空间的实际文档。
showAsAction
是否意味着它在新平台上按预期工作,在旧平台上被忽略? - coder123android:
版本的任何需求。 - ianhanniballakeshowAsName
属性,那么使用自定义命名空间如何让平台知道可能值选项的范围(ifRoom
、never
等),并知道如何解释这些选项呢?我假设“不存在的属性”是指库中没有实现的属性。将android:
替换为app:
看起来似乎并不完全是一个解决方法。我有什么遗漏的吗? - coder123appcompat-v7
库(其中定义了它在它的attrs.xml
文件中)时,自定义属性(app:showAsName
)及其所有可能的值都包含在你的应用程序中。2)AppCompat 库(具体而言,ActionMenuView 在使用ActionBarActivity
时会自动使用)解析并使用app:showAsAction
在所有 API 级别上以相同的方式正确显示项目。这确实需要 XML 和代码共同工作。 - ianhanniballake