builder.setInverseBackgroundForced (true) не работает - PullRequest
4 голосов
/ 02 декабря 2010

В моем коде 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();
     }
}

Что я могу делать не так? Я пробовал вызов метода в разных позициях блока кода, но без разрешения.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2016

Я тоже сталкиваюсь с той же проблемой сегодня.И, как обстоят дела сегодня, в доке 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);

Надеюсь, это поможет!

0 голосов
/ 28 июля 2013

Создайте пользовательский класс диалога, расширяющий 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().

...