天天看點

Android actionbar Menu 和 overflow的自定義

最近項目一直在使用actionBar,但是需要對actionbar上的一些控件進行自定義,這篇文章主要講actionbar 中 menu 及 overflow中的item的自定義。

如果需要自定義menu,需要讓我們的程式使用自定義theme,在AndroidManifest.xml中進行配置。如果是針對整個App,在<application>标簽中設定android:theme="@style/MyTheme",如果是針對某個activity,則在Activity标簽中增加 android:theme="@style/MyTheme",  MyTheme 定義如下:

<style name="MyTheme" parent="Theme.AppCompat.Light">
			<!--修改overflow相關的設定 -->
        <item name="android:popupMenuStyle">@style/MyPopupMenu</item>
        <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item>
        <item name="android:itemTextAppearance">@style/OverflowItemText</item>
			<!--修改menu顔色 -->
        <item name="android:actionMenuTextColor">@android:color/holo_green_light</item>
    </style>
    
    
		<!-- 設定overflow的背景顔色 -->
    <style name="MyPopupMenu" parent="android:style/Widget.Holo.Light.ListPopupWindow">
         <item name="android:popupBackground">@android:color/darker_gray</item>   
    </style>
		<!-- 設定overflow中的item的相關屬性 -->
    <style name="MyDropDownListView" parent="android:style/Widget.Holo.Light.ListView.DropDown">
        <!-- 設定overflow中的item的選中背景 -->
        <item name="android:listSelector">@android:color/holo_blue_light</item>
         <!-- 設定overflow中的item之間的divider -->
        <item name="android:divider">@android:color/holo_red_light</item> 
   		<item name="android:dividerHeight">1dp</item>  
    </style>
    
	<!--設定overflow中的文字的相關屬性 -->
     <style name="OverflowItemText" parent="@android:style/Widget.ActionButton.Overflow">  
        <item name="android:textColor">@android:color/black</item>
        <item name="android:textAppearance">?attr/textAppearanceSmallPopupMenu</item>
    </style>
           

顯示效果如下:

Android actionbar Menu 和 overflow的自定義