Mik*_*elT 2 android kotlin pull-to-refresh android-jetpack-compose
我试图从材质库中实现 PullToRefresh 组件,但即使一对一复制 Google 自己的代码,滑动也不会触发任何内容。https://developer.android.com/reference/kotlin/androidx/compose/material/pullrefresh/package-summary.html
我已经能够将他们的代码减少到最小的可复制示例。加载器将显示您是否手动将其设置为 true,但不会在滑动时触发。
该视图不需要任何其他内容,例如,无论 Box 组件中还有什么内容,加载程序都应该显示。
import androidx.compose.foundation.layout.*
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.pullrefresh.PullRefreshIndicator
import androidx.compose.material.pullrefresh.pullRefresh
import androidx.compose.material.pullrefresh.rememberPullRefreshState
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
@OptIn(ExperimentalMaterialApi::class)
@Composable
fun PullToRefreshComposableTEST() {
var loading by remember {
mutableStateOf(true)
}
val pullRefreshState = rememberPullRefreshState(
refreshing = loading,
onRefresh = {
loading = true
})
Box(
Modifier.fillMaxSize().pullRefresh(pullRefreshState)
) {
PullRefreshIndicator(
modifier = Modifier.align(Alignment.TopCenter),
refreshing = loading,
state = pullRefreshState
)
}
}
@Preview(showSystemUi = true)
@Composable
private fun Preview() {
PullToRefreshComposableTEST()
}
Run Code Online (Sandbox Code Playgroud)
不确定什么不起作用,但基于此
\n\n\n加载器将显示您是否手动将其设置为 true,但不会在滑动时触发。
\n
我假设PullRefresh当您尝试将其拉下时不会显示。
根据文档,
\n\n\n\xe2\x80\xa6 内容需要“可垂直滚动”,以便 SwipeRefresh()\n 能够对滑动手势做出反应。LazyColumn 等布局可自动垂直滚动,而 Column 或 LazyRow 等其他布局则不能自动垂直滚动。在这些情况下,您可以提供\nModifier.verticalScroll 修饰符\xe2\x80\xa6
\n
只需添加一个垂直滚动到你的,Box这样你就可以把它拉下来
您修改后的代码:
\n@OptIn(ExperimentalMaterialApi::class)\n@Composable\nfun PullToRefreshComposableTEST() {\n\n var loading by remember {\n mutableStateOf(false)\n }\n\n val pullRefreshState = rememberPullRefreshState(\n refreshing = loading,\n onRefresh = {\n loading = !loading\n })\n\n Box(\n Modifier\n .fillMaxSize()\n .pullRefresh(pullRefreshState)\n .verticalScroll(rememberScrollState())\n ) {\n PullRefreshIndicator(\n modifier = Modifier.align(Alignment.TopCenter),\n refreshing = loading,\n state = pullRefreshState\n )\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |