rememberSystemUiController 获取状态栏高度
时间: 2024-04-24 11:22:58 浏览: 18
想获取状态栏的高度,你可以使用以下代码:
```kotlin
val resourceId = resources.getIdentifier("status_bar_height", "dimen", "android")
val statusBarHeight = if (resourceId > 0) {
resources.getDimensionPixelSize(resourceId)
} else {
0
}
```
其中,`resourceId` 是通过资源名称 `"status_bar_height"` 和资源类型 `"dimen"` 在系统资源中查找得到的标识符。如果找到了对应的资源,就可以使用 `resources.getDimensionPixelSize()` 方法来获取状态栏的高度;如果没有找到对应资源,就将状态栏高度设置为 0。
相关问题
Jetpack Compose 实现沉浸式效果
要在 Jetpack Compose 中实现沉浸式效果,可以使用 System UI Controller API 来控制状态栏和导航栏的可见性和颜色。
首先,需要在 AndroidManifest.xml 文件中设置主题为 NoActionBar,这样可以去除默认的 ActionBar,从而实现更好的沉浸式效果。
接下来,在 Composable 中使用 SystemUiController API 来控制状态栏和导航栏的可见性和颜色。例如,要隐藏状态栏和导航栏,可以使用以下代码:
```kotlin
val systemUiController = rememberSystemUiController()
systemUiController.isStatusBarVisible = false
systemUiController.isNavigationBarVisible = false
```
要设置状态栏和导航栏的颜色,可以使用以下代码:
```kotlin
val systemUiController = rememberSystemUiController()
systemUiController.setStatusBarColor(Color.Transparent, darkIcons = false)
systemUiController.setNavigationBarColor(Color.Transparent)
```
这里的 darkIcons 参数表示状态栏图标和文字是否使用深色,如果设置为 true,则状态栏图标和文字会使用深色,否则使用浅色。
需要注意的是,System UI Controller API 只在 Android 11 及以上版本中可用,如果要在更早的版本中实现沉浸式效果,可以使用 SystemBarStyle API 或者自定义 View 来实现。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)