关于ActionBar的几个小细节的解决方案

1、当我们点击我们手机上的菜单键时,Android默认是在底部弹出菜单项!但是如果我们还是想在ActionBar的溢出菜单弹出菜单项的话,就可以使用下面定义的方法。

private void forceShowActionBarOverflowMenu() { 
                try { 
                    ViewConfiguration config = ViewConfiguration.get(this); 
                    Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
                    if (menuKeyField != null) { 
                        menuKeyField.setAccessible(true); 
                        menuKeyField.setBoolean(config, false); 
                    } 
                } catch (Exception e) { 
                    e.printStackTrace(); 
                } 
            }

然后在setContentView(R.layout.activity_action_bar_main)之后调用forceShowActionBarOverflowMenu()就可以达到预期的效果。

2、Android的ActionBar默认的溢出菜单是不能显示图标的,可以通过以下方法达到目的。通过重写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) { 
              } 
          } 
      } 
      return super.onMenuOpened(featureId, menu); 
  }    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值