From 9c608396be19f90feec4c80266093eb339655ac3 Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Mon, 27 Oct 2025 16:12:51 +0800 Subject: [PATCH] Optimize BottomSheetDialog window --- .../fongmi/android/tv/ui/dialog/BaseDialog.java | 16 +++++++++++++++- .../java/com/fongmi/android/tv/utils/Util.java | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java index 11f114d08..76b58738b 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java @@ -1,5 +1,6 @@ package com.fongmi.android.tv.ui.dialog; +import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.os.Build; @@ -7,6 +8,7 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; @@ -57,8 +59,8 @@ public abstract class BaseDialog extends BottomSheetDialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState); - dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); dialog.setOnShowListener((DialogInterface f) -> setBehavior(dialog)); + setWindow(dialog); return dialog; } @@ -70,6 +72,18 @@ public abstract class BaseDialog extends BottomSheetDialogFragment { behavior.setSkipCollapsed(true); } + private void setWindow(Dialog dialog) { + Activity activity = getActivity(); + if (activity == null || dialog == null) return; + Window dialogWindow = dialog.getWindow(); + Window activityWindow = activity.getWindow(); + if (activityWindow == null || dialogWindow == null) return; + int activityFlags = activityWindow.getAttributes().flags; + dialogWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + boolean isFullscreen = (activityFlags & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN; + if (isFullscreen) dialogWindow.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + @Override public void onStart() { super.onStart(); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Util.java b/app/src/main/java/com/fongmi/android/tv/utils/Util.java index 5b8dee93e..f35d8f328 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Util.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Util.java @@ -48,6 +48,7 @@ public class Util { public static void hideSystemUI(Window window) { WindowInsetsControllerCompat insets = WindowCompat.getInsetsController(window, window.getDecorView()); insets.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); + window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); insets.hide(WindowInsetsCompat.Type.systemBars()); } @@ -57,6 +58,7 @@ public class Util { public static void showSystemUI(Window window) { WindowCompat.getInsetsController(window, window.getDecorView()).show(WindowInsetsCompat.Type.systemBars()); + window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } public static void showKeyboard(View view) {