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