1

我有一个全屏Activity,这里是我如何使它全屏的所有相关代码:


清单.xml

<activity
    android:name=".Player"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen.player" />

样式.xml

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen.player" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

活动onCreate

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

然后我显示一个BottomSheetDialog,如下所示:

bottomSheetDialog = new BottomSheetDialog(this);
bottomSheetDialog.setContentView(dialogView);
bottomSheetDialog.show();

我遇到的问题是,当我显示 时BottomSheetDialogStatusBar也会显示。

我注意到StatusBar当应用内购买对话框显示时它是隐藏的,在我看来它就像一个BottomSheetDialog.

StatusBar当我显示 a 时,我怎么能不显示BottomSheetDialog

4

3 回答 3

1

回答这个问题可能已经晚了。供其他人参考,StatusBar在方法返回之前设置以下标志时不会显示onCreateView

dialog?.window?.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN)

这适用于显示带有 的模态底部工作表对话框时BottomSheetDialogFragment。在运行 Android 8.0 的设备上进行了测试。

对于带有 的持久底部工作表BottomSheetBehavior,只需将全屏主题应用于Activity或将 的主题上的android:windowFullscreen属性设置为 true 即可Activity

于 2020-04-19T10:53:39.170 回答
0

我通过在对话框 show() 方法之后调用 hideStatusBar 来解决这个问题。我使用 kotlin 风格。

    fun hideStatusBar() {
    val uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
            View.SYSTEM_UI_FLAG_FULLSCREEN
    window?.decorView?.systemUiVisibility = uiOptions
}
于 2020-12-16T03:13:12.717 回答
0

我已将主题应用于我的BottomSheetDialog,它非常适合我。

这是我的v21/styles.xml

PS:windowContentTransitions在我的主题中使用了这个,因此没有必要使用。

<style name="AppTheme.RoundedBottomDialog">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:popupMenuStyle">@style/PopupMenu</item>
        <item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
    </style>
    <style name="AppBottomSheetDialogTheme"
        parent="Theme.Design.Light.BottomSheetDialog">
        <item name="bottomSheetStyle">@style/AppModalStyle</item>
    </style>

    <style name="AppModalStyle"
        parent="Widget.Design.BottomSheet.Modal">
        <item name="android:background">@drawable/white_bottom_sheet</item>
    </style>

这是我的styles.xml

 <style name="AppTheme.RoundedBottomDialog">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:popupMenuStyle">@style/PopupMenu</item>
        <item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
    </style>
    <style name="AppBottomSheetDialogTheme"
        parent="Theme.Design.Light.BottomSheetDialog">
        <item name="bottomSheetStyle">@style/AppModalStyle</item>
    </style>

    <style name="AppModalStyle"
        parent="Widget.Design.BottomSheet.Modal">
        <item name="android:background">@drawable/white_bottom_sheet</item>
    </style>

我已经将它应用于<activity>喜欢,

<activity
            android:name=".SomeActivity"
            android:configChanges="locale|orientation|keyboardHidden"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.RoundedBottomDialog"
            android:windowSoftInputMode="adjustResize|stateAlwaysHidden" />
于 2019-11-19T08:51:28.567 回答