Android Overflow菜单工作在Android Studio预览中完美显示,但未显示在实际设备上

时间:2015-11-21 12:03:14

标签: android android-layout android-actionbar android-menu

我正在尝试向我的Android应用添加溢出菜单(三个点)。 它在预览(Android Studio)上看起来很完美,但无法显示在我的三星Galaxy Tab 2平板电脑上。为什么呢?

这是我到目前为止所做的:

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.boci.helloworldandroidgithub" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.ActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="ThemeOverlay.AppCompat.ActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="AppTheme.ActionBar">
        <item name="windowActionBar">true</item>
        <item name="windowNoTitle">false</item>
    </style>
    <style name="AppTheme.AppBarOverlay" parent="Base.ThemeOverlay.AppCompat.ActionBar" />
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />

</resources>

styles.xml(V21)

<resources>>
    <style name="AppTheme.ActionBar">
        <item name="windowActionBar">true</item>
        <item name="windowNoTitle">false</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/holo_blue_light</item>
    </style>
</resources>

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);

    return super.onCreateOptionsMenu(menu);
}

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

    <group android:checkableBehavior="single" android:enabled="true" >

        <item android:id="@+id/main_red"
            android:orderInCategory="1"
            app:showAsAction="never"
            android:title="@string/menu_red">
        </item>

        <item android:id="@+id/main_green"
            android:orderInCategory="2"
            app:showAsAction="never"
            android:title="@string/menu_green">
        </item>

        <item android:id="@+id/main_blue"
            android:orderInCategory="3"
            app:showAsAction="never"
            android:title="@string/menu_blue">
        </item>

    </group>

</menu>

如果我想看到这三个点和选项,我还应该配置什么?

1 个答案:

答案 0 :(得分:0)

由于ActionBarPolicy中的代码

,因此未显示溢出按钮
public boolean showsOverflowMenuButton() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        return true;
    } else {
        return !ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(mContext));
    }
}

正如您可以看到设备是否低于KitKat,如果设备有硬件密钥,则不会显示溢出按钮。

您可以覆盖此设置,在onCreate的{​​{1}}方法中添加此代码:

Activity