web-dev-qa-db-ja.com

フルスクリーンダイアログフラグメント内でステータスバーの色が黒に変わるandroid

ダイアログフラグメントを使用しています。問題は、ステータスバーの色が黒に変わることです。他の色に変更する方法は?これはフラグメント内の奇妙な原因です。アクティビティは正常に動作します。 DialogFragment内の唯一の黒

        @Override
            public void onStart() {
                super.onStart();    //super.onStart() is where dialog.show() is actually called on the underlying dialog, so we have to do it after this point
                Dialog d = getDialog();
                if (d != null) {

                    int width = ViewGroup.LayoutParams.MATCH_PARENT;
                    int height = ViewGroup.LayoutParams.MATCH_PARENT;
                    d.getWindow().setLayout(width, height);
                    d.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

                }
            }
     @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Dialog dialog = new Dialog(getActivity(), R.style.full_screen_dialog);
            return dialog;

}
9
Jenya Kirmiza

私はこの問題の解決策を投稿しました ここ

res/value-v21/styleに次のテーマを追加します

<style name="DialogTheme" parent="@style/Base.Theme.AppCompat.Light.Dialog">
     <item name="Android:windowTranslucentStatus">true</item>
</style>

次に、DialogFragmentonCreateにスタイルを適用します

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogTheme);
}
6
Noman Rafique

FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDSを設定して、このウィンドウがシステムバーの背景の描画を担当することを示す必要があります。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
        dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        dialog.getWindow().setStatusBarColor(yourColor); 
    }
13
ucMedia

GUYS THE BEST SOLUTION ISウェブサイトのリンクに私がここに投稿しています

https://zocada.com/Android-full-screen-dialogs-using-dialogfragment/

参照用にここにもコードをアップロードします

最初に、スタイルファイルにスタイルFullScreenDialogStyleを作成します。

<style name="FullScreenDialogStyle" parent="Theme.AppCompat.Dialog">
    <item name="Android:windowNoTitle">true</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorPrimary">@color/colorPrimary</item>

    <!-- Set this to true if you want Full Screen without status bar -->
    <item name="Android:windowFullscreen">false</item>

    <item name="Android:windowIsFloating">false</item>

    <!-- This is important! Don't forget to set window background -->
    <item name="Android:windowBackground">@color/colorWhite</item>

    <!-- Additionally if you want animations when dialog opening -->
    <!--<item name="Android:windowEnterAnimation">@anim/slide_up</item>-->
    <!--<item name="Android:windowExitAnimation">@anim/slide_down</item>-->
</style>

dialogFragmentクラス内でメソッドonCreateをオーバーライドします

 @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NORMAL,R.style.FullScreenDialogStyle);

    }

次にOnstartメソッドをオーバーライドします。これにより、uはgetDialog()にアクセスして高さと幅を設定できます。

@Override
public void onStart() {
    super.onStart();
    Dialog dialog = getDialog();
    if (dialog != null) {
        int width = ViewGroup.LayoutParams.MATCH_PARENT;
        int height = ViewGroup.LayoutParams.MATCH_PARENT;
        dialog.getWindow().setLayout(width, height);
    }
}
5
Jeslin Jacob

ここに私が見つけた解決策があります:

これをstyle.xmlファイルに追加します

_<style name="BottomSheetDialogTheme" parent="BaseBottomSheetDialog">
    <item name="Android:statusBarColor">@Android:color/transparent</item>
</style>

<!-- set the rounded drawable as background to your bottom sheet -->
<style name="BottomSheet" parent="@style/Widget.Design.BottomSheet.Modal">
    <item name="Android:background">@color/transparent</item>
</style>

<style name="BaseBottomSheetDialog" parent="@style/Theme.Design.Light.BottomSheetDialog">
    <item name="Android:windowIsFloating">false</item>
    <item name="bottomSheetStyle">@style/BottomSheet</item>
</style>
_

次に、BottomSheetDialogFragmentクラスのonCreate()メソッドをオーバーライドして、次を呼び出す必要があります。

_@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setStyle(BottomSheetDialogFragment.STYLE_NORMAL, R.style.BottomSheetDialogTheme);

}
_
0
Zaki