菜单项不显示在操作栏上
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"/>
我正在尝试在操作栏上显示菜单内容 "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"/>