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

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 に答える
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 に答える