2013-02-25 146 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或自定義對話框。這種操作不需要開始活動。