2013-02-09 1 views
3

사용자 지정 대화 상자를 만들고 싶습니다. 그래서 'dialog_change'템플릿을 만들고 대화 상자를 엽니 다. 사용자 지정 대화 상자에서 양수 및 음수 단추를 만들 수있는 방법

enter image description here

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

지금 내가 하단에 두 개의 버튼 (양의 하나는 부정적인 버튼)을 추가 할. 내가 어떻게 할 수 있니?

+0

먼저 setPositiveButton() 및 setNegativeButton()을 시도해 보겠습니다. –

+1

@ Code-Guru 이러한 메서드는 Dialog 클래스에 없습니다. David, AlertDialog를 재 작성하는 대신 사용하는 것이 어떻습니까? – Sam

+0

@Sam 죄송합니다. 먼저 API 안내서를 다시 확인해야합니다. 일반 대화 상자 대신 AlertDialog를 사용할 수 있습니다. 그것은 당신이 원하는 것을 할 수있는'setButton()'메소드를 가지고있다. –

답변

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", positiveChoice) _Builder android.app.AlertDialog.Builder.setPositiveButton (CharSequence 텍스트, OnClickListener 리스너) _ –

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(); 
관련 문제