- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个透明的状态/导航栏,当我使用默认布局(顶部/左侧)放置一个撰写元素时,它被放置在状态栏下方。在 xml 中我使用 fitsSystemWindows
要解决这个问题,我怎样才能在 jetpack compose 中获得相同的效果?
最佳答案
这对我有用,在 Activity 中我有:
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
JetpackComposePlaygroundTheme {
val controller = rememberAndroidSystemUiController()
CompositionLocalProvider(LocalSystemUiController provides controller) {
ProvideWindowInsets {
ComposeAppPlayground()
}
}
}
}
然后在撰写应用程序游乐场我有这样的事情:
Surface {
var topAppBarSize by remember { mutableStateOf(0) }
val contentPaddings = LocalWindowInsets.current.systemBars.toPaddingValues(
top = false,
additionalTop = with(LocalDensity.current) { topAppBarSize.toDp() }
)
Column(modifier = Modifier.navigationBarsPadding().padding(top = contentPaddings.calculateTopPadding())) {
// content can go here forexample...
// if you want the content go below status bar
// you can remove the top padding for column
}
InsetAwareTopAppBar(
title = { Text(stringResource(R.string.home)) },
backgroundColor = MaterialTheme.colors.surface.copy(alpha = 0.9f),
modifier = Modifier
.fillMaxWidth()
.onSizeChanged { topAppBarSize = it.height }
)
}
}
还有我从
https://google.github.io/accompanist/insets/ 中提到的 guid 中找到的 InsetAwareTopAppBar
@Composable
fun InsetAwareTopAppBar(
title: @Composable () -> Unit,
modifier: Modifier = Modifier,
navigationIcon: @Composable (() -> Unit)? = null,
actions: @Composable RowScope.() -> Unit = {},
backgroundColor: Color = MaterialTheme.colors.primarySurface,
contentColor: Color = contentColorFor(backgroundColor),
elevation: Dp = 4.dp
) {
Surface(
color = backgroundColor,
elevation = elevation,
modifier = modifier
) {
TopAppBar(
title = title,
navigationIcon = navigationIcon,
actions = actions,
backgroundColor = Color.Transparent,
contentColor = contentColor,
elevation = 0.dp,
modifier = Modifier
.statusBarsPadding()
.navigationBarsPadding(bottom = false)
)
}
}
关于android - jetpack compose 中的 fitSystemWindows 对应项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65260293/
我有一个 View 需要锚定到屏幕底部。在全屏模式下,它需要位于最底部,但在临时非全屏模式(用户点击)期间,它需要向上移动以免被系统栏隐藏。文档说设置 android:fitsSystemWindow
我的应用程序有一个 Activity ,为每个部分托管不同的 fragment 。我最近通过将 fitSystemWindows 设置为 true 使状态栏变得半透明,这已将其设置为应用程序的背景色。
我很难理解 fitsSystemWindows 的概念,因为它会根据 View 做不同的事情。根据官方文档,这是一个 Boolean internal attribute to adjust view
我需要图像显示在状态栏下方(状态栏必须是透明的,不知道怎么做)但我无法让它工作,我已经尝试了很多布局示例。 这是我的 xml 布局:
我正在使用一个在主要 Activity 中有 3 个选项卡的应用程序。第二个选项卡的 fragment 有一个带有标题的 NestedScrollView,应该适合系统窗口。选项卡 fragment
我有一个使用 fitSystemWindows 能够在导航栏和状态栏后面绘制背景的应用程序 - 不幸的是,SnackBar 似乎忽略了容器中的 fitSystemWindows=true。我将问题归结
我有一个绑定(bind)到 ViewPager 的 MotionLayout 过渡。 private val pageChangedListener = object : SimpleOnPageCh
我有一个透明的状态/导航栏,当我使用默认布局(顶部/左侧)放置一个撰写元素时,它被放置在状态栏下方。在 xml 中我使用 fitsSystemWindows要解决这个问题,我怎样才能在 jetpack
我无法让我的 ViewPager 页面尊重状态栏高度。 我的 ViewPager 有几个页面,其中一个页面上有一个图像需要放在半透明状态栏下。其余的页面只需要一个彩色状态栏,所以我的想法是在 frag
我正在尝试在状态栏后面绘制 View ,如下所示: 我尝试使用推荐的技术来产生这种效果,但我明白了: 从屏幕截图中可以清楚地看出,我的应用内容都没有被绘制在状态栏后面。 有趣的是,Nav Drawer
当使用来自新的 Android 4.4 KitKat API 的半透明状态栏和导航栏时,将 fitsSystemWindows="true" 和 clipToPadding="false" 设置为 L
我是一名优秀的程序员,十分优秀!