30

DialogFragmenta の背景を完全に明確にしようとしています。

スタイル項目android:windowIsFloatingを true (デフォルト) に設定DialogFragmentすると、希望どおりに表示されますが、背景が非常に薄暗くなります。

false に設定android:windowIsFloatingすると、必要なクリアな背景が得られますが、DialogFragment は画面の約 95% まで膨らみ、その周りにわずかな隙間しか残らず、オーバーレイされたビューが透けて見えます。

私はたくさんの調整を試みましたが、この動作をオーバーライドすることはできません。

目的の効果を得るために を使用する必要PopupWindowがありますか、またはオーバーライドできるスタイル アイテムがいくつかありますか?

4

4 に答える 4

85

私にとってうまくいくのは、DialogFragmentWinowManager.LayoutParamsのinを調整することです:onStart()

@Override public void onStart() {
    super.onStart();

    Window window = getDialog().getWindow();
    WindowManager.LayoutParams windowParams = window.getAttributes();
    windowParams.dimAmount = 0.90f;
    windowParams.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND;
    window.setAttributes(windowParams);
}
于 2013-07-27T18:14:23.937 に答える
3

DialogFrament へのハンドルを取得する必要があり (.show が呼び出された後)、Posted Runnable でこれを行います。

DialogFragment dialog;

...

WindowManagerLayoutParams wlp = dialog.Dialog.Window.Attributes;
wlp.Flags &= ~WindowManagerFlags.DimBehind;
dialog.Dialog.Window.Attributes = wlp;

私は Aleks G の「画面のダイアログの位置を変更する android 」への回答から取得しました。

于 2012-12-11T15:48:35.340 に答える