![](/img/trans.png)
[英]Jetpack Compose - Lazy loading of data in Accompanist HorizontalPager
[英]Jetpack Compose - Setting dimensions for Accompanist placeholder
我正在使用的库: "com.google.accompanist:accompanist-placeholder-material:0.23.1"
我想在加载 state 时在组件的位置(或上方)显示一个占位符。
我为Text
执行以下操作:
MaterialTheme() {
var placeholderVisible by remember { mutableStateOf(false) }
LaunchedEffect(Unit) {
while (true) {
delay(1000)
placeholderVisible = !placeholderVisible
}
}
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Box(
modifier = Modifier
.border(1.dp, Color.Red)
.padding(16.dp)
) {
Text(
modifier = Modifier
.then(
if (placeholderVisible) {
Modifier.height(28.dp).width(62.dp)
} else {
Modifier
}
)
.placeholder(
visible = placeholderVisible,
highlight = PlaceholderHighlight.shimmer()
),
text = if (placeholderVisible) "" else "Hello"
)
}
}
}
我明白了:
相反,我希望无论我设置占位符的高度或宽度有多大,它都不会以任何方式参与测量过程,并且如果我愿意,甚至能够在其他组件上绘制自己(在这种情况下,假设红色边框)。
作为我想要的效果,带有红色边框的框将始终具有尺寸,就好像Modifier.height(28.dp).width(62.dp)
不存在一样。
我知道我可以使用drawWithContent
在组件的边界之外绘制,将矩形或圆形(或其他)的大小指定为component's size + x.dp.toPx()
(或类似的东西)。 但是如何使用Modifier.placeholder
做到这一点?
理想情况下,我需要类似Modifier.placeholder(height = 28.dp, width = 62.dp)
因此,无论有没有这个理想的Modifier
,UI 都不应该改变(当然,可能存在或不存在的微光框除外)。
我想我可以通过修改这个Modifier
的源代码来解决这个问题,但我希望我不需要转向那个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.