更改对话框按钮的颜色

时间:2019-07-16 08:52:25

标签: android

有什么方法可以更改默认对话框按钮的颜色,还是需要为此自定义对话框?

这是我的对话框:

private void removeItem(final int position) {
    /** Create dialog which ask if user is sure about delete name from list **/
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Delete player");
    builder.setIcon(R.mipmap.ic_launcher);
    builder.setMessage("Do you want to delete player: \"" + mNameList.get(position).getText1() + "\"?")
            .setCancelable(false)

            /** If user click "ok" button, delete player from list and save changes **/
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    mNameList.remove(position);
                    mAdapter.notifyItemRemoved(position);
                    saveData();
                }
            })

            /** If user click "cancel" button, name won't delete from list **/
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialogInterface.dismiss();
                }
            });

    /** Create Dialog **/
    AlertDialog alert = builder.create();
    alert.show();
}

2 个答案:

答案 0 :(得分:2)

您可以使用MaterialAlertDialogBuilder提供的Material Components library,从而可以创建物料AlertDialog

只需使用:

   new MaterialAlertDialogBuilder(MainActivity.this,
       R.style.MyThemeOverlay_MaterialComponents_MaterialAlertDialog)
              .setTitle("Dialog")
              .setMessage("Lorem ipsum dolor ....")
              .setPositiveButton("Ok", /* listener = */ null)
              .setNegativeButton("Cancel", /* listener = */ null)
              .show();

然后使用 buttonBarPositiveButtonStyle buttonBarNegativeButtonStyle 属性定义您的自定义样式:

  <!-- Alert Dialog -->
  <style name="MyThemeOverlay.MaterialComponents.MaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
     <item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
     <item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
     <item name="buttonBarNeutralButtonStyle">....</item>
  </style>


  <style name="PositiveButtonStyle" parent="@style/Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">#FFFFFF</item>
    <item name="backgroundTint">#00f</item>
  </style>

  <style name="NegativeButtonStyle" parent="@style/Widget.MaterialComponents.Button.TextButton.Dialog">
    <item name="android:textColor">@color/colorAccent</item>
    <item name="backgroundTint">@color/secondaryColor</item>
  </style>

enter image description here

答案 1 :(得分:0)

您可以像这样为警报对话框设置样式:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogStyle);

您可以像这样在xml文件中编写这种样式:

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:colorAccent">#f3f3f3</item>
    <item name="android:textColor">#f3f3f3</item>
    <item name="android:textColorPrimary">#f3f3f3</item>
</style>