OverFlowButton的替换方式

一:静态替换

通过在主题中添加

<item name="android:actionOverflowButtonStyle">@style/OverFlow</item>

后重写actionbar中 OverFlow的属性

代码如下

<style name="MmsTheme" parent="@android:style/Theme.Material.Light">
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:textColorPrimary">@color/white</item>
    <item name="android:textColor">@*android:color/primary_text_light</item>
    <item name="android:colorAccent">@color/primary</item>
    <item name="android:actionBarSize">@dimen/atcionbar_size</item>
    <item name="android:actionOverflowButtonStyle">@style/MyOverflowButton</item>
</style >
重写OverFlowButton

<!-- MyOverflowButton -->
<style name="MyOverflowButton" parent="@android:style/Widget.Material.ActionButton.Overflow">
    <item name="android:contentDescription">@string/overflow</item>
    <item name="android:src">@drawable/ic_menu_overflow</item>
</style>

二:代码中动态替换

先依照静态添加方法配置并在重写的OverFlowButton的样式中添加android:contentDescription属性(上面蓝色的代码);

代码中动态替换的代码如下:

final String overflowDesc = getString(R.string.overflow);//找到用于定位溢出按钮的描述
final ViewGroup decor = (ViewGroup) getWindow().getDecorView();//获取整个界面
//延迟一段时间确保OverFlowButton已经被加载进来
decor.postDelayed(new Runnable() {
   @Override
   public void run() {
      final ArrayList<View> outViews = new ArrayList<View>();
      //匹配所有的视图组件得到OverFlowButton
      decor.findViewsWithText(outViews, overflowDesc,View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
      if (outViews.isEmpty()) {
         return;
      }
      //强转修改图片
      final ImageButton overflow = (ImageButton) outViews.get(0);
      overflow.setImageResource(R.drawable.ic_menu_overflow_black);
   }
}, 500);

三:修改menu布局文件通过menu与item的相互嵌套实现修改OverFlowButton的效果

布局文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_search"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/action_search"/>
    <item
        android:id="@+id/overflow_menus"
        android:actionProviderClass="@android:style/Widget.Holo.ActionButton.Overflow"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/accessibility_overflow">
        <menu>
            <item
                android:id="@+id/action__delete_all"
                android:showAsAction="never"
                android:title="@string/menu_delete_all"/>
            <item
                android:id="@+id/action_setting"
                android:orderInCategory="100"
                android:showAsAction="never"
                android:title="@string/menu_setting"/>
        </menu>
    </item>

</menu>
并且这时可以在代码中通过“menu.findItem(int id).setIcon(R.drawable.xxx)”进行图标的替换

四:代码中动态修改actionbar的背景颜色

在style文件中添加

<drawable name="BackBar">#fff</drawable>

然后在onCreate()最后调用setbackgroundDrawable()方法
getActionBar().setBackgroundDrawable(this.getBaseContext().
               getResources().getDrawable(R.drawable.BackBar));
getActionBar().show();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值