小编典典

如何更改android 5中的默认对话框按钮文本颜色

all

我的应用程序中有许多警报对话框。这是默认布局,但我在对话框中添加了正面和负面按钮。因此按钮获得了 Android 5
的默认文本颜色(绿色)。我试图改变它但没有成功。知道如何更改该文本颜色吗?

我的自定义对话框:

public class MyCustomDialog extends AlertDialog.Builder {

    public MyCustomDialog(Context context,String title,String message) {
        super(context);

        LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
        View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false);

        TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title);
        titleTextView.setText(title);
        TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message);
        messageTextView.setText(message);

        this.setCancelable(false);

        this.setView(viewDialog);

    } }

创建对话框:

MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage);
builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ...
                        }
}).show();

该negativeButton 是一个默认对话框按钮,采用Android 5 Lollipop 的默认绿色。

非常感谢

带有绿色按钮的自定义对话框


阅读 61

收藏
2022-06-30

共1个答案

小编典典

你可以尝试先创建AlertDialog对象,然后用它来设置改变按钮的颜色,然后显示出来。(请注意,我们调用builder对象而不是调用来获取对象:show()``create()``AlertDialog

//1. create a dialog object 'dialog'
MyCustomDialog builder = new MyCustomDialog(getActivity(), "Try Again", errorMessage); 
AlertDialog dialog = builder.setNegativeButton("OK", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    ...
                }

            }).create();

//2. now setup to change color of the button
dialog.setOnShowListener( new OnShowListener() {
    @Override
    public void onShow(DialogInterface arg0) {
        dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(COLOR_I_WANT);
    }
});

dialog.show()

创建对话框后必须执行此操作onShow()并且不能仅获取该按钮的原因是该按钮尚未创建。

我改为AlertDialog.BUTTON_POSITIVE反映AlertDialog.BUTTON_NEGATIVE你的问题的变化。虽然奇怪的是“确定”按钮会是一个否定按钮。通常它是正极按钮。

2022-06-30