2010-12-02 2 views
4

У меня в моем коде setInverseBackgroundForced установлен в true, но он не работает. Код создает белый текст на темном фоне.builder.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(); 
    } 
} 

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

ответ

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().

0

У меня тоже сегодня такая же проблема. И, как сегодня, в Android-документе говорится, что API setInverseBackgroundForced() устарел и рекомендует разработчику указать фон окна, используя тему диалогового окна предупреждения.

Примечание: Отказ от идеала не должен прекращать работу.

Это говорит о том, что я не хотел исследовать, почему он не работает сегодня, и переключил мой фокус, чтобы сделать что-то более чистым и рекомендуемым способом для 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); 

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