2011-12-22 49 views
8

我試圖做一個對話框,選擇看起來完全一樣:AlertDialog與選擇

AlertDialog with selector

我使用保持着一個ListView的AlertDialog試過,但給出了一個醜陋的黑色邊框在ListView和底部灰色區域之間。我可以使用普通的對話框,但我不想手動構建底部灰色區域。

我知道我可以繼承AlertDialog,但是我還需要子類化Builder,並且它最終成爲很多小代碼。有沒有這樣做的完美方式?

乾杯,

回答

28

使用警報對話框生成器,它有選項。簡單的例子:

AlertDialog.Builder adb = new AlertDialog.Builder(this); 
CharSequence items[] = new CharSequence[] {"First", "Second", "Third"}; 
adb.setSingleChoiceItems(items, 0, new OnClickListener() { 

     @Override 
     public void onClick(DialogInterface d, int n) { 
      // ... 
     } 

}); 
adb.setNegativeButton("Cancel", null); 
adb.setTitle("Which one?"); 
adb.show(); 

dialogs doc,部分添加列表

+2

我建議你把它是這樣adb.setSingleChoiceItems(項目,-1,新DialogInterface.OnClickListener() – 2015-04-27 06:40:31

+0

@AbdulazizNoor爲什麼呢? – Jaec 2016-06-03 04:53:22

+0

@Jaec我真的忘記了爲什麼loooool – 2016-06-08 12:27:32

2

您應該使用以下代碼來選擇單個項目。這是工作代碼

CharSequence colors[] = new CharSequence[]{"View PDF", "Reduce Size", "Delete PDF", "Share PDF"}; 

      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle("Select Option"); 
      builder.setItems(colors, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        Log.e("value is", "" + which); 
        switch (which) { 
         case 0: 
          break; 
         case 1: 
          break; 
         case 2: 
          break; 
         case 3: 
          break; 
        } 
       } 
      }); 
      builder.show();