【问题标题】:Android Compose - How to make Image show under Statusbar?Android Compose - 如何在状态栏下显示图像?
【发布时间】:2021-07-14 22:49:37
【问题描述】:

我刚开始使用 Jetpack Compose。我的应用程序有很多屏幕,它显示带有颜色的状态栏,这是在主题中定义的,但是在某些屏幕上,我想让状态栏颜色是透明的,并在状态栏下显示图像。

请一步步指导我。

提前谢谢你。

【问题讨论】:

标签: android android-jetpack-compose


【解决方案1】:

在setContent之前写下这一行

  window.setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
    )

【讨论】:

    【解决方案2】:

    首先在您的 res > 主题中删除操作栏;

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

    然后在MainActivity中调用你的composable,如下图所示设置WindowCompat

    class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    WindowCompat.setDecorFitsSystemWindows(window, false)
         setContent {
         App()
        }
      }
    }
    

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

    @Composable
    fun App() {
        AppTheme {
            ProvideWindowInsets {
            val systemUiController = rememberSystemUiController()
    
            SideEffect {
                systemUiController.setSystemBarsColor(Color.Transparent, 
                darkIcons = false)
            }
    
            val navController = rememberNavController()
            val coroutineScope = rememberCoroutineScope()
            val navBackStackEntry by 
            navController.currentBackStackEntryAsState()
            val currentRoute = navBackStackEntry?.destination?.route
    
            Scaffold() { innerPadding ->
                Box(modifier = Modifier.padding(innerPadding)) {
                    NavGraph(navController = navController)
                   }
                }
              }
            }
          }
    

    如果您从这里https://github.com/android/compose-samples 克隆 compose 示例,它们会向您展示这种实现方式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多