我需要为android创建一个自定义菜单..但我不确定从哪里开始..我已经看到了很多不同的方法,我发现最好的方法是简单地创建一个具有透明背景的新活动..想法是菜单应该作为屏幕右侧的小列打开,但只是简单地“覆盖”其他布局/活动/视图。我不确定的是..如果我将此活动创建为菜单并将背景设置为透明,如果用户然后按下活动上的按钮会发生什么?消失并且活动触发点击事件?..
提前致谢!
我需要为android创建一个自定义菜单..但我不确定从哪里开始..我已经看到了很多不同的方法,我发现最好的方法是简单地创建一个具有透明背景的新活动..想法是菜单应该作为屏幕右侧的小列打开,但只是简单地“覆盖”其他布局/活动/视图。我不确定的是..如果我将此活动创建为菜单并将背景设置为透明,如果用户然后按下活动上的按钮会发生什么?消失并且活动触发点击事件?..
提前致谢!
一个具有大部分透明背景和一些按钮的单独活动是一个选项。使用 调用该活动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();
}
}
...
}
为此,您可以使用 PopupWindow 或自定义对话框。通过设置 dialog.setCanceledOnTouchOutside(boolean) 来选择外部点击的行为。要布局菜单,您只需将布局参数设置为 PopupWindow 或自定义对话框。此类操作不需要启动活动。