自己定义Actionbar
近期在项目中大量使用actionbar,所以把自己定义的一些属性总结一下。
效果例如以下:
1、自己定义actionbar
在theme的style中设置
<item name="android:actionBarStyle">@style/CustomActionBar</item>
<!-- actionbar样式 -->
<style name="CustomActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">#fb6029</item>
<item name="android:displayOptions">showTitle</item>
<item name="android:titleTextStyle">@style/TitleSytle</item>
</style>
2、自己定义返回button图标
<item name="android:homeAsUpIndicator">@drawable/navbar_back</item>
3、自己定义标题样式
这个须要设置actionbar的属性android:titleTextStyle
<style name="TitleSytle" parent="@android:style/TextAppearance.Large">
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">19sp</item>
<item name="android:layout_marginLeft">5dp</item>
</style>
4、item字体设置
<item name="android:itemTextAppearance">@style/itemTextStyle</item>
<style name="itemTextStyle">
<item name="android:textColor">@android:color/holo_blue_bright</item>
</style>
5、自己定义overflowbutton图标
<item name="android:actionOverflowButtonStyle">@style/OverflowButtonStyle</item>
<style name="OverflowButtonStyle">
<item name="android:src">@drawable/actionbar_add_icon</item>
</style>
6、设置overflow的item显示文字和图标
menu
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.edittextdemo.MainActivity" >
<item
android:id="@+id/action_add_friend"
android:icon="@drawable/menu_add_icon"
android:title="@string/menu_addfriend"/>
<item
android:id="@+id/action_scan"
android:icon="@drawable/men_scan_icon"
android:title="@string/menu_scan"/>
<item
android:id="@+id/action_feedback"
android:icon="@drawable/menu_feedback_icon"
android:title="@string/menu_feedback"/>
</menu>
还须要重写onMenuOpened方法
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (featureId == Window.FEATURE_ACTION_BAR && menu != null)
{
if (menu.getClass().getSimpleName().equals("MenuBuilder"))
{
try
{
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e)
{
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}