2013-02-09 70 views
3

我想創建自定義對話框。所以我創建了一個模板'dialog_change',我打開對話框。如何在自定義對話框中創建正面和負面按鈕

Dialog myDialog = new Dialog(Overview.this); 
myDialog.setContentView(R.layout.dialog_change); 
myDialog.setTitle("My Custom Dialog Title"); 
myDialog.show(); 

enter image description here

現在我想添加兩個按鈕(一個正一負的按鈕),在底部。我怎樣才能做到這一點?

+0

我首先建議嘗試setPositiveButton()和setNegativeButton()。 – 2013-02-09 00:12:57

+1

@Code-Guru這些方法不存在於Dialog類中。大衛,爲什麼不使用AlertDialog而不是重新創建它? – Sam 2013-02-09 00:24:28

+0

@Sam對不起,我應該首先仔細檢查API指南。您可以使用AlertDialog而不是普通的對話框。它有一個'setButton()'方法,可以做你想做的事情。 – 2013-02-09 00:30:21

回答

5

我只是讓自己的自定義類來模擬一個AlertDialog,這樣一來就可以,沒有附加條件使用自己的佈局。 (有一些奇怪的問題,如果你想要一個完整樣式的AlertDialog,你不能完全擺脫框架)。像這樣的東西,但你可以完全按照你想要的擴展它:

public class CustomDialog extends Dialog { 
    private Button positive, negative; 

    public CustomDialog(Context context) { 
     super(context); 
     initialize(context); 
    } 

    protected CustomDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { 
     super(context, cancelable, cancelListener); 
     initialize(context); 
    } 

    public CustomDialog(Context context, int theme) { 
     super(context, theme); 
     initialize(context); 
    } 

    private void initialize(Context c) { 
     //Inflate your layout, get a handle for the buttons 

     positive = (Button)layout.findViewById(R.id.positive): 
     negative = (Button)layout.findViewById(R.id.negative): 

     positive.setVisibility(View.GONE); 
     negative.setVisibility(View.GONE); 
    } 

    public void setPositiveButton(String buttonText, View.OnClickListener listener) { 
     positive.setText(buttonText); 
     positive.setOnClickListener(listener); 
     positive.setVisibility(View.VISIBLE); 
    } 

    public void setNegativeButton(String buttonText, View.OnClickListener listener) { 
     negative.setText(buttonText); 
     negative.setOnClickListener(listener); 
     negative.setVisibility(View.VISIBLE); 
    } 
} 
+0

我們不能這樣做builder.setPositiveButton(「OK」, positiveClick)for _Builder android.app.AlertDialog.Builder.setPositiveButton(CharSequence text,OnClickListener listener)_ – 2013-11-18 11:54:09

1

您可以將這兩個按鈕添加到您用於對話框的自定義佈局(即dialog_change)。 然後你就可以創建對話框如下之後訪問它們:

Dialog myDialog = new Dialog(Overview.this); 
View view = LayoutInflater.from(context).inflate(R.layout.dialog_change,null); 
myDialog.setContentView(view); 
myDialog.setTitle("My Custom Dialog Title"); 

Button button1 = (Button)view.findViewById(R.id.button1); 
button1.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v){ 
     dialog.dismiss(); 
    } 
}); 
//Similarly for the second button 
myDialog.show(); 
相關問題