2015-06-13 145 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

相關問題