我正在尝试在操作栏“水平黑条”上显示菜单内容。我写了下面的代码,菜单中包含了一些项目 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>
答案 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"
希望它会帮助你