更改AlertDialog.Builder

时间:2016-10-08 08:53:53

标签: android android-studio-2.2

给定函数

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)。如何将按钮的颜色更改为粉红色?

任何帮助将不胜感激

3 个答案:

答案 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)

之类的AlertDialog.Builder

答案 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();

然后你可以改变按钮的背景颜色,如上所述