2

我需要为android创建一个自定义菜单..但我不确定从哪里开始..我已经看到了很多不同的方法,我发现最好的方法是简单地创建一个具有透明背景的新活动..想法是菜单应该作为屏幕右侧的小列打开,但只是简单地“覆盖”其他布局/活动/视图。我不确定的是..如果我将此活动创建为菜单并将背景设置为透明,如果用户然后按下活动上的按钮会发生什么?消失并且活动触发点击事件?..

提前致谢!

4

2 回答 2

2

一个具有大部分透明背景和一些按钮的单独活动是一个选项。使用 调用该活动startActivityForResult。在您的按钮的处理程序中,setResult指示按下了哪个按钮并调用finish()以关闭“菜单”活动。然后在“触发”菜单的活动中,覆盖onActivityResult您将查看返回代码并执行相应操作的位置。

在主要活动中:

@Override
public void onCreate(Bundle bdl) {
    ...

    findViewById(R.id.button_menu).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            Intent i = new Intent(MenuActivity.class);
            startActivityForResult(i, REQUEST_MENU);
        }
    }

    ...
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == REQUEST_MENU) {
        switch(resultCode) {
            case MENU_ITEM_1:
                ...
                break;
            case MENU_ITEM_2:
                ...
                break;
            case MENU_ITEM_3:
                ...
                break;
            default:
                ...
    }
}

在您的菜单活动中:

@Override
public void onCreate(Bundle bdl) {
    ...

    findViewById(R.id.menu_option_1).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            setResult(MENU_ITEM_1);
            finish();
        }

    findViewById(R.id.menu_option_2).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            setResult(MENU_ITEM_1);
            finish();
        }

    findViewById(R.id.menu_option_3).setOnClickListener(new OnClickListener() {
        public void click(View v) {
            setResult(MENU_ITEM_1);
            finish();
        }
    }

    ...
}
于 2013-02-25T12:42:51.367 回答
1

为此,您可以使用 PopupWindow 或自定义对话框。通过设置 dialog.setCanceledOnTouchOutside(boolean) 来选择外部点击的行为。要布局菜单,您只需将布局参数设置为 PopupWindow 或自定义对话框。此类操作不需要启动活动。

于 2013-02-25T14:36:17.117 回答