OverFlowButton的替换方式

一:静态替换

通过在主题中添加

@style/OverFlow

后重写actionbar中 OverFlow的属性

代码如下

重写OverFlowButton


二:代码中动态替换

先依照静态添加方法配置并在重写的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 outViews = new ArrayList();
      //匹配所有的视图组件得到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.findItem(int id).setIcon(R.drawable.xxx)”进行图标的替换

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

在style文件中添加

<drawable name="BackBar">#fffdrawable>

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


你可能感兴趣的:(android系统定制)