2013-03-11 63 views
4

我真的很難做任何事情在操作欄sherlock的溢出菜單。使用自定義視圖溢出菜單項

screenshot

理想情況下,我想,以設置一個不同的字體和改變pressed狀態的顏色使用自定義TextView每個項目。

我已經試過(全部沒有成功):

Changing The Style Of Actionbar Overflow
Actionbar styled overflow menu items
listview as action overflow in sherlock actionbar
https://groups.google.com/forum/#!msg/actionbarsherlock/5lHOKNlXn_4/f9XicMXbFFAJ

我的應用程序都會有不同的片段,在溢出菜單不同的項目均是增量BaseFragment。我也在使用v4支持包。我創建我的菜單是這樣的:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.activity_borrow, menu); 
} 

activity_borrow.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_filter" 
     android:title="test" 
     android:orderInCategory="100" 
     android:showAsAction="never" 
/> 
</menu> 

我的應用程序使用,從Theme.Sherlock繼承的主題。

如何在該菜單中使用自定義視圖?或者至少,我該如何更改默認的藍色狀態pressed

+0

試試這個http://jgilfelt.github.com/android-actionbarstylegenerator/生成你自己的風格,並使用它 – baboo 2013-03-11 12:28:03

+1

我不想覆蓋我的整個應用程序的樣式 - 我只需要一個小部分那個生成器不提供。 – boz 2013-03-11 12:31:32

回答

4

更改溢出列表項的顏色,添加兩個項目通常是在res/values/styles.xml定義應用程序的主題:

<item name="android:dropDownListViewStyle">@style/DropDownListView</item> 
<item name="dropDownListViewStyle">@style/DropDownListView</item> 

在同一文件中,添加你剛纔指定的樣式:

<style name="DropDownListView" parent="@style/Widget.Sherlock.ListView.DropDown"> 
    <item name="android:listSelector">@drawable/selectable_background</item> 
</style> 

終於在繪製文件夾中創建一個選擇繪製selectable_background.xml,包含此:

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:exitFadeDuration="@android:integer/config_mediumAnimTime" > 
    <item android:state_pressed="false" android:state_focused="true" android:drawable="@color/focussed_color" /> 
    <item android:state_pressed="true" android:drawable="@color/pressed_color" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

最後,定義它通常都放在colors.xml顏色:

<resources> 
    <color name="pressed_color">#FF8E4067</color> <!-- your purple tone already ;) --> 
    <color name="focussed_color">#DD8E4067</color> 
</resources> 

在我的應用程序,我用「動作條樣式生成器」作爲baboo建議,這對於您方便地處理一切。對於這個答案,我只是提取並簡化了我認爲組成溢出菜單樣式的部分。

我覺得這是對的造型三種不同項目的影響,有些神祕:

  • 從我的理解,android:dropDownListViewStyle包括隱藏ActionBar中的「三個點」背後的 溢出菜單。
  • 不要與android:actionDropDownStyle,其用於在情況下,應用程序導航下拉您使用actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
  • 然而,一些與硬件菜單按鈕Android設備(例如,歌Nexus S或銀河S3的風格相混淆Mini) 不顯示「三點」,但是如果點擊硬件菜單按鈕,則從屏幕底部滑入 覆蓋菜單。 android:popupMenuStyle是對此樣式的正確屬性。

同樣,這只是我從我自己的應用程序開發中記得的事情。

此外,請確保檢查沒有其他樣式文件(例如,帶有configuration qualifiers的文件夾)會覆蓋您剛定義的樣式。

總而言之,我明白這隻會改變列表項的背景顏色。要在那裏使用完全自定義的視圖,你可以創建一個custom spinner view,在你的ActionBar中添加一個帶有「三點」圖標的虛擬按鈕並點擊打開微調器。

+0

真棒 - 感謝您解釋所有這一切:) – boz 2013-03-15 09:18:22