![](/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.