1
以前,在使用AppCompat
之前,我使用的是SherlockActionBar
來支持Android 2.3。爲什麼在使用AppCompat時需要在菜單項中使用應用程序名稱空間
以下菜單工作得完美SherlockActionBar
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_browser"
android:title="@string/menu_browser"
android:showAsAction="ifRoom"
android:icon="?attr/actionBarBrowserIcon"/>
<item
android:id="@+id/menu_share"
android:title="@string/menu_share"
android:showAsAction="ifRoom"
android:icon="?attr/actionBarShareIcon"/>
</menu>
然而下,甚至因爲遷移到AppCompat
,我知道上面的菜單無法正常工作。我需要使用app
命名空間,以使其工作。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_browser"
android:title="@string/menu_browser"
app:showAsAction="ifRoom"
android:icon="?attr/actionBarBrowserIcon"/>
<item
android:id="@+id/menu_share"
android:title="@string/menu_share"
app:showAsAction="ifRoom"
android:icon="?attr/actionBarShareIcon"/>
</menu>
這是爲什麼?與SherlockActionBar
相比有什麼區別,這會使得app
命名空間變得不必要?
爲什麼Google不會進行與Jake Wharton相同的更改?這對於App開發人員來說不是更方便嗎? –
方便,是的。正確,不。名稱空間的存在是有原因的。 – tachyonflux