builder.setInverseBackgroundForced(true)不起作用

时间:2010-12-02 08:47:28

标签: android background alertdialog

我的代码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();
     }
}

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

3 个答案:

答案 0 :(得分:2)

setInverseBackgroundForced(布尔值useInverseBackground)在Android API级别23(Android 6.0棉花糖)中已弃用。

此标志仅用于材料前主题。而是使用警报对话框主题指定窗口背景。

代码就是这样!

AlertDialog dialog = new AlertDialog.Builder(BaseActivity.this, R.style.Dark2).create();
dialog.getWindow().setBackgroundDrawableResource(android.R.color.background_dark);

答案 1 :(得分: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()

答案 2 :(得分: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);

希望有所帮助!