Android操作栏菜单图标现在显示在平板电脑中

时间:2014-11-02 07:35:44

标签: android android-actionbar android-menu

我开发了一个应用程序,其中包含操作栏中的菜单图标,我创建如下菜单:

@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)上测试时,菜单图标消失了,但功能仍然存在。按下底部的菜单软按钮,弹出窗口,但顶部操作栏中缺少图标。怎么解决?任何想法?

2 个答案:

答案 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函数中调用它,它将为你做所有的魔力。