【Android入门】Actionbar不显示overflow(右边三个小点)

如果手机上有物理Menu键,overflow按钮就不会显示,需要按Menu键才显示,这个是本身android的设计就这么定的。

参考链接:stackoverflow.com/questions/11480302/overflow-actions-on-actionbar-not-showing


如果不喜欢的话,强制显示的方案:

private void getOverflowMenu() {
        ViewConfiguration viewConfig = ViewConfiguration.get(this);
         
        try {
            Field overflowMenuField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
            if(null != overflowMenuField){
                overflowMenuField.setAccessible(true);
                overflowMenuField.setBoolean(viewConfig, false);
            }
        } catch (NoSuchFieldException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
在onCreate()的方法中直接调用就可以:

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);
        .
        .
        .
        //force to display overflow menu in action bar
        getOverflowMenu();
    }

原作者有补充到即时应用于android4.4以上的设备应该也不会有问题:因为即使得到的overflowMenuField为null,代码也做了判空处理,所以没什么影响。

实际在调用时加入版本兼容条件,如下:

//force to display overflow menu in action bar when sdk version less than 21 
        if((Build.VERSION.SDK_INT >= 10) & (Build.VERSION.SDK_INT < 21)) {
            getOverflowMenu();
        }

参考链接: www.crifan.com/android_actionbar_three_dot_overflow_not_show/

你可能感兴趣的:(android)