Android Compose -如何在Statusbar下显示图像?

zqry0prt  于 2024-01-04  发布在  Android
关注(0)|答案(4)|浏览(127)

我刚开始使用Jetpack Compose。我的应用程序有很多屏幕,它显示带有颜色的StatusBar,这是在主题中定义的,但在某些屏幕上,我想让StatusBar颜色透明,图像显示在StatusBar下。
请一步一步地指导我。
先谢谢你了。

klsxnrf1

klsxnrf11#

WindowCompat.setDecorFitsSystemWindows(window, false)添加到Activity onCreate

  1. override fun onCreate(savedInstanceState: Bundle?) {
  2. super.onCreate(savedInstanceState)
  3. WindowCompat.setDecorFitsSystemWindows(window, false)
  4. ...
  5. }

字符串
然后在Scaffold中添加WindowInsets.navigationBars,以防止底部部分与导航栏重叠

  1. Scaffold(
  2. contentWindowInsets = WindowInsets.navigationBars
  3. )

展开查看全部
afdcj2ne

afdcj2ne2#

只需在setContent之前写入这一行

  1. window.setFlags(
  2. WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
  3. WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
  4. )

字符串

kmb7vmvb

kmb7vmvb3#

首先在你的res >主题中删除动作栏;

  1. <style name="Theme.app_android"
  2. parent="Theme.MaterialComponents.Light.NoActionBar">

字符串
然后在MainActivity中调用您的composable,设置WindowCompat before,如下所示

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. WindowCompat.setDecorFitsSystemWindows(window, false)
  5. setContent {
  6. App()
  7. }
  8. }
  9. }


然后使用ProvideWindowInsets函数记住在SideEffect函数中调用的systemUiController,该函数将系统状态栏设置为透明

  1. @Composable
  2. fun App() {
  3. AppTheme {
  4. ProvideWindowInsets {
  5. val systemUiController = rememberSystemUiController()
  6. SideEffect {
  7. systemUiController.setSystemBarsColor(Color.Transparent,
  8. darkIcons = false)
  9. }
  10. val navController = rememberNavController()
  11. val coroutineScope = rememberCoroutineScope()
  12. val navBackStackEntry by
  13. navController.currentBackStackEntryAsState()
  14. val currentRoute = navBackStackEntry?.destination?.route
  15. Scaffold() { innerPadding ->
  16. Box(modifier = Modifier.padding(innerPadding)) {
  17. NavGraph(navController = navController)
  18. }
  19. }
  20. }
  21. }
  22. }


如果你从这里克隆合成样本https://github.com/android/compose-samples,他们会告诉你如何实现它。

展开查看全部
gxwragnw

gxwragnw4#

ActivityonCreate()上的setContent{}之前执行以下操作:

  1. WindowCompat.setDecorFitsSystemWindows(window, false)

字符串

相关问题