2013-02-09 3 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(). –

+1

@ Code-Guru Эти методы не существуют в классе Dialog. Дэвид, почему бы просто не использовать 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 («ОК», positiveClick) для _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(); 
Смежные вопросы