AppCompatActivity操作栏和设备菜单按钮

时间:2015-05-11 21:54:02

标签: android android-support-library appcompat-v7-r22.1

我正在使用AppCompatActivity和ActionBar样式@style/Widget.AppCompat.Light.ActionBar。当我从活动创建菜单时,在ActionBar中出现溢出菜单按钮,如果设备没有硬件菜单按钮。 但是,在设备上小米Redmi Note,ActionBar中的溢出按钮apear,以及设备有自己的硬件按钮。 这是一些配置:

compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
    minSdkVersion 10
    targetSdkVersion 22
}

1 个答案:

答案 0 :(得分:1)

appcompat-v7支持库强制溢出菜单在每个具有KitKat及更高版本的设备的操作栏(或工具栏)中始终可见。 MENU键(如果存在)仍然有效,打开溢出菜单。这是一种理想的行为,它的设计就像这样。

代码很简单:

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

您可以在此处查看完整的源代码: https://github.com/android/platform_frameworks_support/blob/master/v7/appcompat/src/android/support/v7/internal/view/ActionBarPolicy.java#L49-L55