更改 AlertDialog.Builder 中按钮的颜色
Change color of button in AlertDialog.Builder
给定函数为
private void showInputDialog() {
final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());
input.setSingleLine();
FrameLayout container = new FrameLayout(getActivity());
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin= convertDpToPx(25); //remember to scale correctly
params.rightMargin= convertDpToPx(30);
input.setLayoutParams(params);
container.addView(input);
alert.setTitle("Change City");
alert.setMessage("Hey there, could not find the city you wanted. Please enter a new one:\n");
alert.setView(container);
alert.setPositiveButton("Go", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeCity(input.getText().toString());
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alert.show();
}
现在,当我在我的应用程序中获得此 AlertDialog.Builder 时,按钮颜色为绿色(默认为 Android 5),但 EditText 颜色为粉红色(R.color.coloraccent)。如何将按钮的颜色更改为粉红色?
如有任何帮助,我们将不胜感激
您需要向警报添加自定义视图 window。创建一个名为 "my_custom_alert_window" 的布局文件,然后执行以下操作:
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.my_custom_alert_window, null);
dialogBuilder.setView(dialogView);
Button btn = (Button) dialogView.findViewById(R.id.label_field);
btn.setBackgroundColor(....);
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
然后你可以像上面那样改变按钮的背景颜色
像这样尝试
alertDialog.show();
仅在调用 .show() 之后。
试试这个片段
//for negative side button
alertDialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor);
//for positive side button
alertDialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor);
你可以设置主题。正如您所指出的,这些按钮默认使用主题中的 accentColor 作为 textColor,要更改它,您应该:
在 res/values/styles 中修改您的应用主题。xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="buttonBarPositiveButtonStyle">@style/Base.Widget.AppCompat.Button.Borderless.MyStyle</item>
</style>
并将您的按钮样式添加到 AlertDialog 按钮的主题中
<style name="Base.Widget.AppCompat.Button.Borderless.MyStyle">
<item name="android:textColor">@color/colorAccent</item>
</style>
备注
这会影响所有的 AlertDialogs,而不仅仅是一个。您还可以创建一个新的单独主题并添加到 AlertDialog.Builder 中,例如 new AlertDialog.Builder(getActivity(), R.style.MyAlertDialogTheme)
给定函数为
private void showInputDialog() {
final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
final EditText input = new EditText(getActivity());
input.setSingleLine();
FrameLayout container = new FrameLayout(getActivity());
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin= convertDpToPx(25); //remember to scale correctly
params.rightMargin= convertDpToPx(30);
input.setLayoutParams(params);
container.addView(input);
alert.setTitle("Change City");
alert.setMessage("Hey there, could not find the city you wanted. Please enter a new one:\n");
alert.setView(container);
alert.setPositiveButton("Go", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
changeCity(input.getText().toString());
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alert.show();
}
现在,当我在我的应用程序中获得此 AlertDialog.Builder 时,按钮颜色为绿色(默认为 Android 5),但 EditText 颜色为粉红色(R.color.coloraccent)。如何将按钮的颜色更改为粉红色?
如有任何帮助,我们将不胜感激
您需要向警报添加自定义视图 window。创建一个名为 "my_custom_alert_window" 的布局文件,然后执行以下操作:
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.my_custom_alert_window, null);
dialogBuilder.setView(dialogView);
Button btn = (Button) dialogView.findViewById(R.id.label_field);
btn.setBackgroundColor(....);
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
然后你可以像上面那样改变按钮的背景颜色
像这样尝试
alertDialog.show();
仅在调用 .show() 之后。 试试这个片段
//for negative side button
alertDialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor);
//for positive side button
alertDialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor);
你可以设置主题。正如您所指出的,这些按钮默认使用主题中的 accentColor 作为 textColor,要更改它,您应该:
在 res/values/styles 中修改您的应用主题。xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
...
<item name="buttonBarPositiveButtonStyle">@style/Base.Widget.AppCompat.Button.Borderless.MyStyle</item>
</style>
并将您的按钮样式添加到 AlertDialog 按钮的主题中
<style name="Base.Widget.AppCompat.Button.Borderless.MyStyle">
<item name="android:textColor">@color/colorAccent</item>
</style>
备注
这会影响所有的 AlertDialogs,而不仅仅是一个。您还可以创建一个新的单独主题并添加到 AlertDialog.Builder 中,例如 new AlertDialog.Builder(getActivity(), R.style.MyAlertDialogTheme)