顾乔芝士网

持续更新的前后端开发技术栈

Android Tips之自定义菜单

Android Tips之自定义菜单

Android中不能直接通过继承Menu实现任意样式的菜单。

一般通过弹出窗或者对话框实现,个人认为用对话框实现更加合理,因为一旦你触摸屏幕中非对话框区域,对话框会消失,这与我们的选项菜单的设计是相同的。

实际上我们不用设置菜单,直接使用对话框,当点击“菜单”键的时候显示对话框或者让对对话框消失,就像我们在操作选项菜单一样。

代码很简单:

  • 首先配置对话框相关设置(显示的位置,显示的视图,KeyListener)

    //对话框中显示的视图

    View view = LayoutInflater.from(this).inflate(R.layout.custom_menu,null);

    menuDialog = new AlertDialog.Builder(this).create();

    Window mWindow = menuDialog.getWindow();

    WindowManager.LayoutParams lp = mWindow.getAttributes();

    lp.x = 0; //新位置X坐标

    lp.y = 300; //新位置Y坐标

    //设置menuDialog显示的位置

    menuDialog.onWindowAttributesChanged(lp);

    //设置对话框中显示的视图

    menuDialog.setView(view);

    menuDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

    @Override

    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {

    //当对话框显示时,抬起“Menu”键时

    if (keyCode == KeyEvent.KEYCODE_MENU&&event.getAction()==KeyEvent.ACTION_UP)

    menuDialog.dismiss();

    return false;

    }

    });

  • 其次,重写Activity中的onMenuOpened方法

    @Override

    public boolean onMenuOpened(int featureId, Menu menu) {

    //显示对话框

    menuDialog.show();

    return false;

    }

这样就实现了自定义菜单,我们来看看效果吧。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言