菜单项不显示在操作栏上

menu items do not show on the actionbar

我正在尝试在操作栏上显示菜单内容 "the horizontal black bar"。我写了下面的代码,菜单包含一些项目,如 xml 文件 belwo,但问题出在 运行 时间,按下设置按钮时会出现所有项目,其中 none 会出现在操作栏上!

我正在使用 android 工作室和下面发布的 build.gradle 文件。

请告诉我如何强制菜单项出现在操作栏上?

代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    Log.w(TAG, SubTag.msg("onCreateOptionsMenu"));

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);

    if (!this.mScanning) {
        Log.d(TAG, SubTag.msg("onCreateOptionsMenu", "no scanning"));

        menu.findItem(R.id.menu_cancel).setVisible(false);
        menu.findItem(R.id.menu_scan).setVisible(true);
        menu.findItem(R.id.menu_refresh).setActionView(null);

    } else {
        Log.d(TAG, SubTag.msg("onCreateOptionsMenu", "scanning"));

        menu.findItem(R.id.menu_cancel).setVisible(true);
        menu.findItem(R.id.menu_scan).setVisible(false);
        menu.findItem(R.id.menu_refresh).setActionView(R.layout.actionbar_indeterminate_progress);
    }

    return super.onCreateOptionsMenu(menu);
}

menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<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=".actMain">

<item
    android:id="@+id/menu_refresh"
    android:orderInCategory="1"
    android:title="refresh"
    app:showAsAction="always"/>
<item
    android:id="@+id/menu_scan"
    android:checkable="true"
    android:orderInCategory="2"
    android:title="@string/menu_scan"
    app:showAsAction="always"/>
<item
    android:id="@+id/menu_cancel"
    android:title="@string/menu_cancel"
    android:orderInCategory="100"
    app:showAsAction="ifRoom|withText"/>
<item
    android:id="@+id/menu_exit"
    android:title="@string/menu_exit"
    android:orderInCategory="101"
    app:showAsAction="never"/>

gradle.build:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.com.bt_11"
        minSdkVersion 19
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.+'
}

style.xml

<!-- Base application theme. -->
     <style name="AppTheme"       
 parent="@android:style/Theme.Holo.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>

如果您只想在点击溢出菜单时显示,请添加此行

app:showAsAction="never"

如果你只想显示 if room 然后使用这个

app:showAsAction="always|ifRoom"

希望对您有所帮助

你可以试试这段代码,把showAsAction="always"换成showAsAction="collapseActionView|ifRoom"

 <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"
    xmlns:hmkcode="http://schemas.android.com/apk/res-auto"
    tools:context=".actMain" >

<item
   android:id="@+id/menu REFRESH"
   android:orderInCategory="1"
   android:title="refresh"
   hmkcode:showAsAction="collapseActionView|ifRoom"/>

<item
   android:id="@+id/menu_scan"
   android:checkable="true"
   android:orderInCategory="2"
   android:title="@string/menu_scan"
   hmkcode:showAsAction="collapseActionView|ifRoom"/>

<item
  android:id="@+id/menu_cancel"
  android:title="@string/menu_cancel"
  android:orderInCategory="100"
  hmkcode:showAsAction="ifRoom|withText"/>


<item
  android:id="@+id/menu_exit"
  android:title="@string/menu_exit"
  android:orderInCategory="101"
  hmkcode:showAsAction="never"/>