[英]How to know if a Composable is currently being rendered (the Composable is not inside a Lazy Composable)?
如果我的布局大到足以使屏幕垂直滾動,我怎么知道當前是否正在渲染(完全或部分)某個 Composable?
重要的是要強調在此布局中沒有使用Lazy
Composable(如LazyColumn
)。
您可以使用 Modifier.globallyPositioned{it.positionOnWindow} 查看 Composable 在屏幕上的位置,並將其與父 Composable 高度/寬度或屏幕高度/寬度進行比較。
@Composable
private fun MyComposable() {
var parentSize by remember { mutableStateOf(IntSize.Zero) }
var text by remember {
mutableStateOf("")
}
Column(modifier = Modifier.fillMaxSize()) {
Text(text = text)
Column(modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.onSizeChanged {
parentSize = it
}
) {
Box(
modifier = Modifier
.fillMaxWidth()
.height(800.dp)
.background(Color.Red)
)
Box(modifier = Modifier
.fillMaxWidth()
.height(200.dp)
.background(Color.Yellow)
.onGloballyPositioned {
text = "parentSize: $parentSize" +
"positionInParent: ${it.positionInParent()}\n" +
"positionInRoot: ${it.positionInRoot()}\n" +
"positionInWindow: ${it.positionInWindow()}\n"
}
)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.