我刚开始学习Jetpack Compose。我的应用程序有许多屏幕,它显示具有颜色的StatusBar,该颜色在主题中定义,但是在某些屏幕上,我想使StatusBar颜色透明并且图像显示在StatusBar下面。
请逐步指导我。
提前谢谢您。
请逐步指导我。
提前谢谢您。
window.setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
)
在Activity
的onCreate()
中调用setContent{}
之前,执行以下操作:
WindowCompat.setDecorFitsSystemWindows(window, false)
首先,在你的res>主题中移除操作栏;
<style name="Theme.app_android"
parent="Theme.MaterialComponents.Light.NoActionBar">
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
App()
}
}
}
然后使用ProvideWindowInsets函数来记住一个被称为系统UI控制器的对象,该对象被调用在一个SideEffect函数内,使系统状态栏变为透明。
@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)
}
}
}
}
}