在应用中,我有status bar
并隐藏了the bottom control bar
。
上次,我使用marginTop="20dp"
来适应状态栏的下一行。但是,我使用Galaxy 10
进行了测试,状态栏有很大的不同。因此,我的应用看起来很奇怪,并解决了在根视图上应用此属性的问题。
fitsSystemWindows = "true"
但是,现在,我还有另一个问题,bottom control bar
被隐藏,但是应用该属性后,其空白与底部控制栏一样大。有什么办法适合显示状态栏但没有底部控制栏的屏幕(虽然我将其隐藏)?
(黄色是MainActivity,黑色是Fragment)
粉红色的部分必须到达底部,但由于该属性而无法到达。
我进行了测试,我认为kitkat
和Q
会发生这种情况。
当我删除该属性时,它可以与底部控制栏一起使用,但不能与状态栏一起使用...
这是我的布局文件。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.main.MainActivity">
<fragment
...
/>
...
</FrameLayout>
因此,我仅使用一个Activity
较多的Fragments
。
这是Activity的用途:
private fun hideStatusBar() {
DisplayUtil.hideStatusBar(this)
this?.window?.decorView?.setOnSystemUiVisibilityChangeListener { visibility ->
if (visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) {
DisplayUtil.hideStatusBar(this)
}
}
}
object DisplayUtil {
fun hideStatusBar(activity: Activity?) {
activity?.window?.decorView?.systemUiVisibility = (
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY // hide status bar and nav bar after a short delay, or if the user interacts with the middle of the screen
)
}
}