1

嗨,我想在PopUpMenu内部创建一个,onCreateOptionMenu()我的目标是 API 级别 10,我minSdk的平板电脑版本是 8,因为你知道没有硬菜单键,所以对于软菜单键,我onCreateOtionMenu()用来在屏幕下方创建一个菜单选项,它也是工作。当我在我的屏幕上PopUpMenu 按下 Soft menuOption 时,它第一次显示它,下一次它不显示任何东西。

PopUpMenu这是我的内部OnCreateOptionssMenu()方法的代码片段

  @Override 
    public boolean  onCreateOptionsMenu(Menu menu) {

    PopUpMenu popup=new PopUpMenu(this,txtView);
                        popup.getMenuInflater().inflate(R.menu.option,popup.getMenu());
     popup.show();

                        //popup.dismiss();
                        //menu.clear();
                        //getMenuInflater().inflate(R.menu.fragmenttwo_menu, menu);
                            return (super.onCreateOptionsMenu(menu));


                        }

注意:这里的 txtView 是一个 TextView,你可以在下面说一个视图锚,我正在显示 PopUpMenu 项。 对于这里的校准,我正在使用ViewPager

4

3 回答 3

0

你可以这样使用:

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == 0) {

            Toast.makeText(MainActivity.this, "hii", Toast.LENGTH_SHORT).show();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

编辑: 在上面的代码中Toast,这就是为什么它dismiss在一段时间后。它取决于您在方法中所做的代码。现在检查下面的代码。dialog是显示直到你dismiss它。

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == 0) {

            PopupMenu popupMenu = new PopupMenu(MainActivity.this, lView);
            popupMenu.getMenuInflater().inflate(R.menu.activity_main,
                    popupMenu.getMenu());
            popupMenu.show();

            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

希望你能理解....

于 2013-03-26T09:09:45.583 回答
0

经过大量的研发后,我发现用softmenu键显示PopUpMenutarget version 10不可能的。PopUpMenu仅在 11+ API 级别后可用。在我的情况下,有时会显示,有时不显示。如果您有任何解决方案,请告诉我。

于 2013-03-26T14:23:41.260 回答
0

我使用了 user1381827 的答案,但后来意识到菜单不断消失。这是我最终得到的代码:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU && event.getAction() == 1) {
        ImageView v = (ImageView) findViewById(R.id.header);
        showHeaderMenu(v);
        return false;
    }

    if(keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_BACK) return super.onKeyUp(keyCode, event);
    return true;
}

但在一般情况下,最后两行可能/应该替换为

return super.onKeyUp(keyCode, event);
于 2015-10-25T14:39:02.887 回答