Android 修改ActionBar样式

本文介绍了如何在Android应用中修改Action Bar的样式,包括添加和移除Action Bar,改变其图标和标题,响应按钮点击事件,启用返回图标功能,以及添加Action View,并让Overflow菜单中的选项显示图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接在主题中自定义就行


    

 <style name="AppBaseTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:actionBarStyle">@style/myActionBarStyle</item>
    </style>
	
    <style name="myActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@color/application_main_color</item>
        <item name="android:titleTextStyle">@style/AcBar_titleStyle</item>
    </style>
    
    <style name="AcBar_titleStyle">
        <item name="android:textColor">@color/white</item>
    </style>

可以修改ActionBar背景颜色,字体颜色,字体大小等等。

添加和移除Action Bar

    1、在xml文件中直接设置NoActionBar

    2、getActionBar().hide();

修改Action Bar的图标和标题

   默认情况下,系统会使用<application>或者<activity>中icon属性指定的图片来作为ActionBar的图标,但是我们也可以改变这一默认行为。如果我们想要使用另外一张图片来作为ActionBar的图标,可以在<application>或者<activity>中通过logo属性来进   行指定。比如项目的res/drawable目录下有一张weather.png图片,就可以在AndroidManifest.xml中这样指定。

  修改标题,xml中设置label。

  showAsAction则指定了该按钮显示的位置,主要有以下几种值可选:always表示永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在overflow中,never则表示永远显示在 overflow中。

响应Action按钮的点击事件

   当用户点击Action按钮的时候,系统会调用Activity的onOptionsItemSelected()方法,通过方法传入的MenuItem参数,我们可以调用它的getItemId()方法和menu资源中的id进行比较,从而辨别出用户点击的是哪一个Action按钮

通过Action Bar图标进行返回

   可以通过调用setDisplayHomeAsUpEnabled()方法来启用ActionBar图标返回功能

   它的按钮Id是R.id.home

添加Action View

为了声明一个ActionView,我们可以在menu资源中通过actionViewClass属性来指定一个控件,例如可以使用如下方式添加SearchView:

    <menu xmlns:android=“http://schemas.android.com/apk/res/android” >  
      
        <item  
            android:id=“@+id/action_search”  
            android:icon=“@drawable/ic_action_search”  
            android:actionViewClass=“android.widget.SearchView”  
            android:showAsAction=“ifRoom|collapseActionView”  
            android:title=“@string/action_search” />  
        ……  
      
    </menu>  

让Overflow中的选项显示图标

Google认为隐藏在overflow中的Action按钮都应该只显示文字。当然,如果你认为这样不够美观,希望在overflow中的Action按钮也可以显示图标,我们仍然可以想办法来改变这一默认行为。其实,overflow中的Action按钮应不应该显示图标,是由MenuBuilder这个类的setOptionalIconsVisible方法来决定的,如果我们在overflow被展开的时候给这个方法传入true,那么里面的每一个Action按钮对应的图标就都会显示出来了。调用的方法当然仍然是用反射了,代码如下所示:

@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) {
			}
		}
	}
	return super.onMenuOpened(featureId, menu);
}

这里我们重写了一个onMenuOpened()方法,当overflow被展开的时候就会回调这个方法,接着在这个方法的内部通过返回反射的方法将MenuBuilder的setOptionalIconsVisible变量设置为true就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值