Android应用:在对话框片段中将自定义背景替换为默认按钮背景

时间:2013-12-05 01:27:39

标签: android-button android-dialogfragment

我要做的是更改我编写的自定义DialogFragment的默认背景。通常,我会通过更改XML布局文件来完成此操作,但是,对于DialogFragment,这些按钮在布局文件中不存在。

本质上,我试图访问setPositiveButton,setNegativeButton和setNeutral按钮以修改它们。或者,我接下来尝试通过id获取它们,但是,因为它们没有在布局文件中定义,所以我没有相应的id。我已经找到了很多关于如何修改其余布局的例子,但我无法找到正/中性/负面按钮可修改的任何地方。

理想情况下,我可以在以下代码块中执行此操作:

.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialog, int id) {
                       ...
                   }
               })

提前致谢。

1 个答案:

答案 0 :(得分:5)

以下是代码...按钮实例仅在创建对话框后有效。希望这对你有所帮助。

public static class CustomDialog extends DialogFragment
{

    public static CustomDialog newInstance()
    {
        return new CustomDialog();
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        super.onCreateDialog(savedInstanceState);
        Builder builder = new AlertDialog.Builder(getActivity());

        AlertDialog dialog = builder.create();

        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {


            }
        });

        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "CANCEL",new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {


            }
        });


        return dialog;

    }

    @Override
    public void onStart()
    {
        super.onStart();
        Button pButton =  ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE);
        Button nButton =  ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_NEGATIVE);

        pButton.setBackgroundColor(getResources().getColor(R.color.Blue));
        nButton.setBackgroundColor(getResources().getColor(R.color.Green));
    }
}