我有很多警报对话框在我的应用程序。这是一个默认的布局,但我添加了积极和消极的按钮对话框。所以按钮得到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的默认绿色。
非常感谢
在学习的同时又看了很多造型。要知道的一件重要的事情是,代码比样式更高级。按键的样式并不适用,所以我感谢Ramakrishna Joshi在这篇文章中的回答。我在其中添加了白天和夜晚的主题:
private fun AlertDialog.dlgTextColor() {
val currentNightMode = (resources.configuration.uiMode
and Configuration.UI_MODE_NIGHT_MASK)
when (currentNightMode) {
Configuration.UI_MODE_NIGHT_YES -> {
this.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ContextCompat.getColor(context, R.color.yellow_accent))
this.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ContextCompat.getColor(context, R.color.yellow_accent))
}
Configuration.UI_MODE_NIGHT_NO -> {
this.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ContextCompat.getColor(context, R.color.blue_accent))
this.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ContextCompat.getColor(context, R.color.blue_accent))
}
}
}
对它的调用是:
.dlgTextColor()
在对话构建器中,对该方法的调用确实跟在.show之后。
有两种方法可以更改对话框按钮的颜色。
基本的方法
如果你只是想改变一个活动,在alertDialog.show()后面写下面两行;
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(getResources().getColor(R.color.colorPrimary));
alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(getResources().getColor(R.color.colorPrimaryDark));
推荐
我建议在styles.xml中为AlertDialog添加一个主题,这样就不必在每个活动/对话调用中一次又一次地编写相同的代码。您只需创建一个样式,并在对话框上应用该主题。所以当你想要改变AlertDialog框的颜色时,只要在styles.xml中改变颜色,所有的对话框都会在整个应用程序中更新。
<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/colorPrimary</item>
</style>
并在AlertDialog中应用主题。构建器
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme);