我正在做项目,出现了这个问题。
在主屏幕中,我有一些元素(某些行占据屏幕的 60%)。然后是一个懒惰的专栏。 我尝试过“拉动刷新”/“滑动刷新”,但在 60% 的屏幕上不起作用,只监听“惰性”项目上的滑动行为。 有什么解决办法吗? 参考:
val pullRefreshState = rememberPullRefreshState(
refreshing = isLoading,
onRefresh = viewModel::getAllAssetsValue
)
Box(
modifier = modifier
.fillMaxSize()
.pullRefresh(pullRefreshState)
) {
// Rows and Columns
.................
PullRefreshIndicator(
refreshing = isLoading,
state = pullRefreshState,
modifier = Modifier.align(Alignment.TopCenter)
)
}
您可以通过将
Modifier.verticalScroll(rememberScrollState())
应用于除 LazyColumn 之外的其他可组合项来解决此问题。
请看下面的例子:
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SimpleInversePullRefresh() {
var isLoading by remember { mutableStateOf(false) }
val pullToRefreshState = rememberPullToRefreshState()
LaunchedEffect(isLoading) {
if (isLoading) {
delay(1000)
isLoading = false
}
}
PullToRefreshBox(
modifier = Modifier.fillMaxSize(),
state = pullToRefreshState,
isRefreshing = isLoading,
onRefresh = { isLoading = true }
) {
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
) {
Column(
modifier = Modifier
) {
repeat(15) {
Text("non-scrollable content")
}
}
LazyColumn(
modifier = Modifier.weight(1f)
) {
items(50) {
Text(
modifier = Modifier.fillMaxWidth(),
text = "ITEM $it"
)
}
}
}
}
}
输出:
注意
当您在不可滚动内容顶部开始滑动时,刷新指示器将始终出现,但在
LazyColumn
上滑动时,仅当LazyColumn
滚动到顶部时才会出现。