菜单项不显示在操作栏上

时间:2015-09-23 15:31:22

标签: android menu android-actionbar android-appcompat

我正在尝试在操作栏“水平黑条”上显示菜单内容。我写了下面的代码,菜单中包含了一些项目 xml文件belwo,但问题是在运行时,按下设置按钮时出现所有项目,并且没有一个项目出现在操作栏上!

我正在使用android studio和下面发布的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>

2 个答案:

答案 0 :(得分:1)

你可以尝试这段代码,替换showAsAction =&#34;总是&#34; with showAsAction =&#34; collapseActionView | ifRoom&#34;

 <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"/>

答案 1 :(得分:0)

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

app:showAsAction="never"

如果您只想显示房间,请使用此

app:showAsAction="always|ifRoom"

希望它会帮助你