ActoinBar Overflow 显示问题 (三个点不显示)

2023-02-10 18:51:59 浏览数 (2)

actionBar 上面 部分机型 显示不出来 三个点那个按钮 ,大概的解释是 如果设备有菜单功能键,显示隐藏动作的功能将会由Menu菜单功能键实现

就是 有实体的菜单键 就会由菜单键替代。

如果想强制显示 这三个点的按钮,那么将下面这个方法 放入oncreate里面调用。

代码语言:javascript复制
privatevoid getOverflowMenu() {
      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();
     }
 }
代码语言:javascript复制
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@ id/menu_registered"
        android:actionViewClass="android.widget.SearchView"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:title="@string/contact_friend_unfollow"/>
    <item
        android:id="@ id/menu_unregistered"
        android:actionViewClass="android.widget.SearchView"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/invite"/>
    <item
        android:id="@ id/menu_all"
        android:actionViewClass="android.widget.SearchView"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="@string/all"/>
</menu>
代码语言:javascript复制
showAsAction 后面参数解释:
代码语言:javascript复制
</pre><pre name="code" class="html">ALWAYS:总是将该MenuItem显示在ActionBar上
COLLAPSE_ACTION_VIEW:将该Action View折叠成普通菜单项
IF_ROOM:当ActionBar位置有足够空间时才显示该MenuItem
NEVER:不将该MenuItem显示在ActionBar上
WITH_TEXT:将该MenuItem显示在ActionBar上,且显示该菜单项的文本

0 人点赞