2015-06-13 171 views
-1

我刚开始了Android Development的旅程,有一件事让我感到困惑。为什么android需要showAsAction =“always”以别名为前缀?

创建菜单项时,为什么我们需要在android studio的自动完成提示使用android:showAsAction =“value”时为属性指定别名?

当使用android:showAsAction时,该属性被忽略。如果我替换它的任何其他作品。为什么?

相关 https://stackoverflow.com/a/17914095/1084568

+0

这不是“其他”。这是您之前定义的命名空间:'xmlns:[yourapp] =“http://schemas.android.com/apk/res-auto”'。没有什么能阻止你定义'xmlns:android =“http://schemas.android.com/apk/res-auto”' –

+0

通过定义你的意思是使用这个命名空间:xmlns:doo =“http://schemas.android。 com/apk/res-auto“/////// doo是我的名字空间吗? – Lothre1

+2

**是**,确切地说。 'xmlns = XML NameSpace' –

回答

2

如果您在使用本机操作栏,您可以使用android:showAsAction。每当您看到android:作为前缀时,就会知道它是由Android框架定义的属性。

如果您正在使用操作栏的appcompat-v7 backport,该操作栏来自库(appcompat-v7)。图书馆不能发明新的android:属性。相反,对于库定义的属性,您使用绑定到http://schemas.android.com/apk/res-auto URL的新名称空间(例如,app:)。

它说的android:命名空间是不能,如果我们假装支持较旧的Android版本,如2.1

正确提供访问属性。在这种情况下,虽然android:showAsAction已添加到Android 3.0框架中,但appcompat-v7的部分目标是支持Android 2.1。虽然Google有时间机器,但他们没有使用它来“锁定”Android并添加以前不存在的属性。 (尽管如果他们这样做了,我们也不会了解它,因为我们的过去会被改变为拥有这些属性,除非我们在某种程度上存在于正常时空连续体之外的存在,涉及穿着斗篷)

所以,appcompat-v7可以使用属性等android:icon,它从1.0的Android存在,但不能支持到Android 3.0 android:showAsAction之前。因此,他们有自己的属性。

+0

非常好,这让我更深入了解事情的结构。我不知道showAsAction是从v3.0开始引入的。 – Lothre1

相关问题