您的位置:首页 > 其它

自定义Actionbar

2015-06-02 17:15 218 查看
最近在项目中大量使用actionbar,所以把自定义的一些属性总结一下。

效果如下:




1、自定义actionbar

在theme的style中设置

[code]<item name="android:actionBarStyle">@style/CustomActionBar</item>


[code]    <!-- 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、自定义返回按钮图标

[code]   <item name="android:homeAsUpIndicator">@drawable/navbar_back</item>


3、自定义标题样式

这个需要设置actionbar的属性android:titleTextStyle

[code]    <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字体设置

[code]<item name="android:itemTextAppearance">@style/itemTextStyle</item>


[code]    <style name="itemTextStyle">
        <item name="android:textColor">@android:color/holo_blue_bright</item>
    </style>


5、自定义overflow按钮图标

[code]  <item name="android:actionOverflowButtonStyle">@style/OverflowButtonStyle</item>


[code]    <style name="OverflowButtonStyle">
        <item name="android:src">@drawable/actionbar_add_icon</item>
    </style>


6、设置overflow的item显示文字和图标

menu

[code]<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方法

[code]    @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);

    }


下载源码:http://download.csdn.net/detail/zhong1113/8765119
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: