我开发了一个应用程序,其中包含操作栏中的菜单图标,我创建如下菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
这是onOptionsItemSelected:
的代码@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_home:
startActivity(new Intent(this, MainActivity.class));
return true;
case R.id.menu_adv_search:
startActivity(new Intent(this, AdvSearchActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
使用我的智能手机,菜单图标在那里(使用LG手机),但是当我在平板电脑(Galaxy Tab 8)上测试时,菜单图标消失了,但功能仍然存在。按下底部的菜单软按钮,弹出窗口,但顶部操作栏中缺少图标。怎么解决?任何想法?
答案 0 :(得分:0)
在带有硬件菜单按钮的设备(例如三星Galaxy系列)上,溢出菜单表现为传统的'菜单,使用硬件菜单按钮。
请为每个菜单项使用以下属性
android:showAsAction="always"
如果您使用的是actionbarcompat包,那么请使用以下
代替上面的属性app:showAsAction="always"
不要忘记添加以下命名空间
xmlns:app="http://schemas.android.com/apk/res-auto"
答案 1 :(得分:0)
正如我发现的那样,在提供了菜单按钮硬件的设备上,菜单图标将被隐藏,并且菜单项showAsAction =“always”将不会将菜单图标带回我想要的问题,所以我找到了解决方案Here
这是我从上面的链接中使用的代码来克服这个问题(如果它可以被称为问题):
private void getOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if(menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
你可以把这个函数放在你的活动或基础活动中,并在你的onCreate函数中调用它,它将为你做所有的魔力。