Android 我看不到actionbar中的溢出菜单为什么?
我在安卓系统中使用actionbar,但它没有显示溢出条。我作为教程尝试,但它不起作用,尽管我做了同样的事情,但有什么错?我只想在家中显示溢出条,其他的都显示溢出条。这是菜单代码我在安卓系统中使用actionbar,但它没有显示溢出条。我作为教程尝试,但它不起作用虽然我也做了同样的事情,但有什么不对?我只想在家里显示,其他的则显示在溢出区。这是菜单代码Android 我看不到actionbar中的溢出菜单为什么?,android,android-actionbar,overflow-menu,Android,Android Actionbar,Overflow Menu,我在安卓系统中使用actionbar,但它没有显示溢出条。我作为教程尝试,但它不起作用,尽管我做了同样的事情,但有什么错?我只想在家中显示溢出条,其他的都显示溢出条。这是菜单代码我在安卓系统中使用actionbar,但它没有显示溢出条。我作为教程尝试,但它不起作用虽然我也做了同样的事情,但有什么不对?我只想在家里显示,其他的则显示在溢出区。这是菜单代码 <item android:id="@+id/Homebar" android:title="Home" android:
<item android:id="@+id/Homebar"
android:title="Home"
android:orderInCategory="1"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/infobar"
android:title="Info"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/servicebar"
android:title="Services"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/onlinetoolsbar"
android:title="Online tools"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/mediacenterbar"
android:title="Media center"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
您可能正在使用带有专用菜单按钮的设备,或者使用带有专用菜单按钮的模拟器。 在Android 4.4之前,如果设备有专用的菜单按钮,Android不会显示溢出按钮。如果按下菜单按钮,溢出菜单应出现 谷歌在Android 4.4 Kitkat中改变了这种行为,现在所有设备都会显示溢出按钮。如果您正在使用仿真器,请尝试在Android 4.4仿真器上进行测试。如果您正在使用专用菜单按钮在真实设备上进行测试,请使用该按钮“调用”溢出菜单 编辑:要获得自定义子菜单/溢出菜单,必须在菜单项中创建单独的菜单。 像这样:
<item android:id="@+id/Homebar"
android:title="Home"
android:orderInCategory="1"
android:showAsAction="ifRoom"
>
<menu>
<item android:id="@+id/infobar"
android:title="Info"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/servicebar"
android:title="Services"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/onlinetoolsbar"
android:title="Online tools"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/mediacenterbar"
android:title="Media center"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
</menu>
</item>
您可能正在使用带有专用菜单按钮的设备,或者使用带有专用菜单按钮的模拟器。 在Android 4.4之前,如果设备有专用的菜单按钮,Android不会显示溢出按钮。如果按下菜单按钮,溢出菜单应出现 谷歌在Android 4.4 Kitkat中改变了这种行为,现在所有设备都会显示溢出按钮。如果您正在使用仿真器,请尝试在Android 4.4仿真器上进行测试。如果您正在使用专用菜单按钮在真实设备上进行测试,请使用该按钮“调用”溢出菜单 编辑:要获得自定义子菜单/溢出菜单,必须在菜单项中创建单独的菜单。 像这样:
<item android:id="@+id/Homebar"
android:title="Home"
android:orderInCategory="1"
android:showAsAction="ifRoom"
>
<menu>
<item android:id="@+id/infobar"
android:title="Info"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/servicebar"
android:title="Services"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/onlinetoolsbar"
android:title="Online tools"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
<item android:id="@+id/mediacenterbar"
android:title="Media center"
android:orderInCategory="2"
android:showAsAction="ifRoom"
/>
</menu>
</item>
从以下位置阅读:
操作溢出
操作栏中的操作溢出提供了对应用程序不太常用的操作的访问。溢出图标仅在没有菜单硬件键的手机上出现。带有菜单键的手机在用户按键时显示动作溢出`
因此,这不是你的应用程序的奇怪行为,这是android的正常行为,取决于你在menu.xml
中输入的showAsAction
属性。它还取决于屏幕大小和方向
顺便说一句,有些人使用黑客来强制显示溢出菜单,但正如我所说的,这是一种黑客行为,对你的应用程序不好,最终会导致你在其他设备/版本中出现bug。看一看,以便更好地理解
如果您真的想在应用程序中使用它而不使用黑客,请阅读以下内容:
操作溢出
操作栏中的操作溢出提供了对应用程序不太常用的操作的访问。溢出图标仅在没有菜单硬件键的手机上出现。带有菜单键的手机在用户按键时显示动作溢出`
因此,这不是你的应用程序的奇怪行为,这是android的正常行为,取决于你在menu.xml
中输入的showAsAction
属性。它还取决于屏幕大小和方向
顺便说一句,有些人使用黑客来强制显示溢出菜单,但正如我所说的,这是一种黑客行为,对你的应用程序不好,最终会导致你在其他设备/版本中出现bug。看一看,以便更好地理解
如果你真的想在应用程序中使用它而不使用hack,.只有那些android:showAsAction设置为“从不”的项目才会显示在溢出菜单中。您已为每个项目将其设置为“ifRoom”。只有那些项目显示在溢出菜单中,其android:showAsAction设置为“从不”。您已为每个项目将其设置为“ifRoom”。我希望以下代码对大多数设备有用,用于显示带有溢出菜单的操作栏和使用: 下面这种方式很容易在大多数设备中显示操作栏溢出菜单,您可以使用>3.0版本 我检查了这段代码在Android 4.0、4.1、4.2、4.3版本中是否正常工作 MainActivity.java
package com.example.actionbaroverflowmenu;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.WindowManager;
public class MainActivity extends Activity {
private Menu mainMenu;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main, menu);
mainMenu = menu;
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
mainMenu.performIdentifierAction(R.id.action_overflow, 0);
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
菜单/main.xml
<item
android:id="@+id/action_locate"
android:icon="@drawable/ic_action_locate"
android:orderInCategory="200"
android:showAsAction="always"/>
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:orderInCategory="300"
android:showAsAction="always"/>
<item
android:id="@+id/action_overflow"
android:icon="@drawable/ic_action_overflow"
android:menuCategory="container"
android:orderInCategory="400"
android:showAsAction="always"
android:visible="true">
<menu>
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:menuCategory="container"
android:orderInCategory="100"
android:showAsAction="always"
android:title="Refresh"
android:visible="true"/>
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:menuCategory="container"
android:orderInCategory="200"
android:showAsAction="always"
android:title="Search"
android:visible="true"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="300"
android:showAsAction="always"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:orderInCategory="400"
android:showAsAction="always"
android:title="Help"/>
<item
android:id="@+id/action_about"
android:icon="@drawable/ic_action_about"
android:orderInCategory="500"
android:showAsAction="always"
android:title="About"/>
</menu>
</item>
从以下链接下载操作栏图标包:
您必须在drawable文件夹中放置图标,以便在menu/main.xml文件中使用我希望以下代码对大多数设备有用,用于显示带有溢出菜单的操作栏和使用: 下面这种方式很容易在大多数设备中显示操作栏溢出菜单,您可以使用>3.0版本 我检查了这段代码在Android 4.0、4.1、4.2、4.3版本中是否正常工作 MainActivity.java
package com.example.actionbaroverflowmenu;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.WindowManager;
public class MainActivity extends Activity {
private Menu mainMenu;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main, menu);
mainMenu = menu;
return true;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
mainMenu.performIdentifierAction(R.id.action_overflow, 0);
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
菜单/main.xml
<item
android:id="@+id/action_locate"
android:icon="@drawable/ic_action_locate"
android:orderInCategory="200"
android:showAsAction="always"/>
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:orderInCategory="300"
android:showAsAction="always"/>
<item
android:id="@+id/action_overflow"
android:icon="@drawable/ic_action_overflow"
android:menuCategory="container"
android:orderInCategory="400"
android:showAsAction="always"
android:visible="true">
<menu>
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:menuCategory="container"
android:orderInCategory="100"
android:showAsAction="always"
android:title="Refresh"
android:visible="true"/>
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:menuCategory="container"
android:orderInCategory="200"
android:showAsAction="always"
android:title="Search"
android:visible="true"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="300"
android:showAsAction="always"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:orderInCategory="400"
android:showAsAction="always"
android:title="Help"/>
<item
android:id="@+id/action_about"
android:icon="@drawable/ic_action_about"
android:orderInCategory="500"
android:showAsAction="always"
android:title="About"/>
</menu>
</item>
从以下链接下载操作栏图标包:
您必须在drawable文件夹中放置图标,以便在menu/main.xml文件中使用,而不是使用
android:showAsAction=“ifRoom”
,将您希望始终折叠的项目的“ifRoom”更改为“collapseActionView”(即,仅显示在溢出中)。不要像那样使用android:showAsAction=“ifRoom”
,将“ifRoom”更改为“collapseActionView”,用于您希望始终折叠的项目(即,仅显示在溢出中)。不,不这样工作我正在使用4.3模拟程序我不知道出了什么问题,它现在让我很生气:(它在安卓4.3上按预期工作。模拟程序默认有一个菜单按钮,所以