2013-02-25 92 views
2

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

谢谢!

回答

2

与几乎透明的背景和一些按钮A单独的活动是一种选择。用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(); 
     } 
    } 

    ... 
} 
+0

但在“主” -activity按钮,多数民众赞成,而不是“菜单” -activity ..我怎么知道按下哪个按钮上的“主” -activity ..因为我想,一旦然后如果我按透明区域,其中“主要” - 活动按钮是..那么不会有任何事件触发,因为透明区域是“菜单”的一部分 - 活动它覆盖“主要” - 活动..排序,如果像将元素放置在HTML中的a-link上.. 我的观点是按下“main” - actvity按钮不会触发任何事件的透明区域。 。要么? – Inx 2013-02-25 12:50:16

+0

@Inx你不知道。 Android活动是异步的。当按下按钮调用菜单时,打开菜单活动,然后直接继续执行代码。它在'onActivityResult'中,你看到哪个按钮被按下。 – 2013-02-25 12:52:23

+0

我想我可能会困惑你..或者我混乱自己:) ..无论如何..我得到如何创建菜单的一部分..并使菜单项触发evenets(或只是普通的方法)上“main”-activity .. 但是,如果“主” - 活动包含几个按钮,那么用户提出菜单,并且他/她不会按下任何菜单项......但取而代之的是hs/she按下“main” - 活动/布局中的一个按钮..是否会触发主活动上特定按钮的事件.. – Inx 2013-02-25 12:56:25

1

您可以使用PopupWindow或自定义对话框用于这一目的。通过设置dialog.setCanceledOnTouchOutside(boolean)来选择外部点击的行为。并且为了布局菜单,您可以简单地将布局参数设置为PopupWindow或自定义对话框。这种操作不需要开始活动。