appcompat-v7 r21/r22:强制显示溢出菜单图标

3

似乎使用低于Android Kitkat版本并且硬件有菜单按钮的设备仍然无法在屏幕上显示菜单按钮,即使使用新的r21/r22 appcompat库。

我猜测这是由内部的ActionBarPolicy类决定的:

public boolean showsOverflowMenuButton() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        return true;
    } else {
        return !ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(mContext));
    }
}

所以强制溢出菜单按钮只存在于Android 4.4及以上版本。

是否有办法强制在Android 4.4以下的设备上显示溢出菜单,即使它们具有硬件菜单按钮?


通常认为,应该让操作系统来决定是否需要显示溢出菜单,并且如果设备有硬件菜单按钮,则强制使用溢出菜单是不好的做法。然而,在这篇文章中有一个答案:https://dev59.com/xGUp5IYBdhLWcg3wHk2o#15493649 我还没有测试过,所以不确定它是否有效。 - Daniel Nugent
1个回答

0
在appcompat支持库中,使用自己的工具栏(从XML填充或从代码创建)替换默认操作栏(在您的ActionBarActivity中调用setSupportActionbar(toolbar)),您将看到溢出菜单(如果已设置菜单)。在Android 2.3.x模拟器上进行测试。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接