2012-03-09 63 views

回答

8

當然,您可以使用Dialog.setContentView()將對話框的內容設置爲任意佈局。

Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.yourLayoutId); 
    dialog.show(); 

讓自己有一個垂直的LinearLayout有你想要的,然後通知你的setContentView對話框上的按鈕佈局文件,通過你的佈局文件的名稱。

如果你是deadset上AlertDialog你可以用builder.setView()調用類似的東西

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View layout = inflater.inflate(R.layout.yourLayoutId, (ViewGroup) findViewById(R.id.yourLayoutRoot)); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this) 
    .setView(layout); 
    AlertDialog alertDialog = builder.create(); 
    alertDialog.show(); 
+0

完美...謝謝! – Ahmed 2012-03-10 18:20:42

6

一直有setItems(),它做到這一點,因爲API級別1.無理由來創建自定義對話框,除非你想改變項目的外觀和感覺。

CharSequence[] items = {"Foo", "Bar", "FooBar"}; 
new AlertDialog.Builder(activity) 
.setTitle("Choose a widget") 
.setItems(items, new DialogInterface.OnClickListener() 
{ 
    @Override 
    public void onClick(DialogInterface dialog, int which) 
    { 
     switch(which) 
     { 
      case FOO: 
      // foo case 
      break; 

      .... 
     } 
    } 
} 
.create().show(); 
+4

關於此的一個注意事項:您無法在警報上調用setMessage,如果您確實看不到這些項目。 – 2015-01-12 23:34:50

+1

偉大的代碼。你應該提到它創建垂直按鈕,因爲我首先想到這會創建水平按鈕。 – yshahak 2015-09-03 04:21:57

+0

好點,但你怎麼樣這些? – Calin 2018-03-09 17:09:42

相關問題