2013-01-05 80 views
1

Android上是否可以使用不同風格的MenuItems(無論是選項菜單硬鍵還是操作欄 - 它們都是相同的)?不同風格的MenuItems

我想要一個應用選擇器和另一個選擇器。

從我的在線搜索中,我發現您可以更改主題並用自己的樣式覆蓋屬性,但適用於所有MenuItems。

我還能在XML中設置android:background屬性嗎?

回答

2

這是可能的ActionBar的項目。您必須將您希望具有不同選擇器的項目定義爲自定義操作視圖。

<item 
    android:id="@+id/menu_custom" 
    android:actionLayout="@layout/action_view" 
    android:showAsAction="always"/> 

在由android:actionLayout引用的佈局您有指定您選擇,使其可以點擊的,可聚焦的ImageView

<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/action_view_background" 
    android:clickable="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:minWidth="56dip" 
    android:paddingBottom="8dip" 
    android:paddingTop="8dip" 
    android:src="@drawable/ic_launcher" /> 

點擊事件不由onOptionsItemSelected處理。您必須在onCreateOptionsMenu中附加OnClickListener

menu.findItem(R.id.menu_custom).getActionView().setOnClickListener(l); 
+0

雖然有點哈克我會拿它! – dnkoutso

1

報價this answer

根據官方文檔在http://developer.android.com/guide/topics/ui/menus.html#checkable

注:圖標菜單(從選項菜單)菜單項不能顯示覆選框或單選按鈕。如果選擇使圖標菜單中的項目可檢查,則每次狀態更改時都必須通過交換圖標和/或文本來手動指示選中的狀態。

這同樣適用於操作欄項目,因爲它是同一個對象,菜單項

+0

我不是指可檢查或不可以,但這可能會導致我的答案。謹慎發佈一些代碼示例? – dnkoutso

+0

可檢查或不可檢查的意思是,MenuItem沒有可以由選擇器表示的內部狀態。因此,如果按下按鈕,您必須手動跟蹤並相應地更改圖標。 –