给定函数
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颜色为Pink(R.color.coloraccent)。如何将按钮的颜色更改为粉红色?
任何帮助将不胜感激
答案 0 :(得分:8)
试试这个
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);
答案 1 :(得分:2)
你可以这个主题。默认情况下,对于textColor,按钮使用主题中的accentColor,如你所知,要改变它你应该:
在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而不仅仅是一个。您还可以创建一个新的单独主题,并添加到new AlertDialog.Builder(getActivity(), R.style.MyAlertDialogTheme)
答案 2 :(得分:0)
您需要在警报窗口中添加自定义视图。创建一个名为&#34; my_custom_alert_window&#34;的布局文件。然后如下所示:
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();
然后你可以改变按钮的背景颜色,如上所述