自定义菜单,android,透明活动?

时间:2013-02-25 12:39:51

标签: android android-activity menu transparent

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

提前致谢!

2 个答案:

答案 0 :(得分: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();
        }
    }

    ...
}

答案 1 :(得分:1)

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