0

android:Theme.NoTitleBar.Fullscreen我在我的手机上使用styles.xml,一切正常。但在某些屏幕下方带有前置摄像头/耳机的手机(如小米红米 Note 7)上,它无法全屏显示(状态栏仍然存在,但没有状态且颜色较暗)。当我<item name="android:statusBarColor">@color/myColor</item>在父主题全屏时使用时,它不起作用并且无法更改状态栏颜色,既不通过 java 也不通过 xml。(android:colorPrimaryDark全屏主题生效时也不会影响状态栏颜色)

我怎样才能为所有手机保留全屏主题,同时只更改这些类型手机的状态栏颜色?我应该比较(应用程序窗口高度+导航栏高度)<实际屏幕高度然后根据结果设置主题吗?

(我的直接解决方案是对 26 以下的所有 api 使用全屏,并且由于具有此屏下隐藏/非隐藏摄像头功能的手机带有 26 以上的 android api 并且具有更大的屏幕,所以我使用没有全屏的 notitlebar 主题,然后更改状态栏颜色)

4

1 回答 1

0

首先,您需要在您的styles.xml 中更改您的主题。为此,您可以使用一些没有操作栏的 AppCompat 主题,这意味着您将只有顶部有状态栏的全屏。例如,您可以在您的 styles.xml 中使用此主题:

 <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

在同一个 xml 文件中,您可以使用以下代码:

<item name="android:statusBarColor">@color/colorAccent</item>
<item name="android:windowLayoutInDisplayCutoutMode">
shortEdges 
</item>

如果您的 styles.xml 中已经有此代码,请删除它,因为您仍然会有黑色切口区域:

<item name="android:windowFullscreen">true</item> <---REMOVE THIS CODE
于 2020-09-29T19:04:10.803 回答