5

我在我的代码中将 setInverseBackgroundForced 设置为 true,但它似乎不起作用。该代码在深色背景上生成白色文本。

这是我的构建器代码:

public class test {
    private void createMyLocationDisabledAlert() {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setTitle("Title")
            .setInverseBackgroundForced(true)
            .setMessage(
                      "my message")
                      .setCancelable(false)
                      .setPositiveButton("Options",
                              new DialogInterface.OnClickListener() {
                          public void onClick(DialogInterface dialog, int id) {
                              showOptions();
                          }
                      });
          builder.setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int id) {
                     dialog.cancel();
                 }
            });
          AlertDialog alert = builder.create();
          alert.show();
     }
}

我可能做错了什么?我已经在代码块的不同位置尝试了方法调用,但没有解决。

4

3 回答 3

2

setInverseBackgroundForced (boolean useInverseBackground)在 Android API 级别 23 (Android 6.0 Marshmallow) 中已弃用。

此标志仅用于预材质主题。相反,使用警报对话框主题指定窗口背景。

代码是这样的!

AlertDialog dialog = new AlertDialog.Builder(BaseActivity.this, R.style.Dark2).create();
dialog.getWindow().setBackgroundDrawableResource(android.R.color.background_dark);
于 2019-12-23T10:23:20.003 回答
0

使用扩展 DialogFragment 的自定义对话框类并使用它来显示 AlertDialog。

例子:

public class CustomAlertDialog extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Title")
            .setInverseBackgroundForced(true)
            .setMessage("my message")
            .setCancelable(false)
            .setPositiveButton(
                "Options",
                 new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int id) {
                     showOptions();
                 }
            });
        builder.setNegativeButton(
            "Cancel",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
        AlertDialog alert = builder.create();
        return alert;
    }
}

public class test {
    private void createMyLocationDisabledAlert() {
        new CustomAlertDialog().show(getSupportFragmentManager(), Constants.FragmentTagSearch);
    }
}

注意:我使用支持库是为了兼容,因此使用getSupportFragmentManager().

于 2013-07-28T06:37:33.240 回答
0

我今天也面临同样的问题。就目前的情况而言,Android 文档说setInverseBackgroundForced()API 已被弃用,并建议开发人员使用警报对话框主题指定窗口背景。

注意:理想情况下,弃用不应停止该功能的工作。

也就是说,我不想调查它为什么今天不起作用,而是将我的注意力转移到按照 Android 文档以更清洁和推荐的方式完成工作。它类似于下面的代码:

private final int DIALOG_THEME_STYLE = android.support.v7.appcompat.R.style.Base_Theme_AppCompat_Dialog_MinWidth;

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this, DIALOG_THEME_STYLE);

希望有帮助!

于 2016-09-09T15:05:05.067 回答