1.导入库
implementation("androidx.navigation:navigation-common:2.8.9")
implementation("androidx.navigation:navigation-compose:2.8.9")
implementation("androidx.compose.material3:material3:1.3.2")
implementation("androidx.compose.material3.adaptive:adaptive:1.1.0")
implementation("androidx.compose.material3.adaptive:adaptive-layout-android:1.1.0")
implementation("androidx.compose.material3.adaptive:adaptive-navigation-android:1.1.0")
implementation("androidx.compose.material3.adaptive:adaptive-navigation:1.1.0")
implementation("androidx.compose.material3:material3-adaptive-navigation-suite:1.3.2")
implementation("androidx.compose.material:material:1.8.0")
implementation("androidx.compose.material:material-icons-extended:1.7.8")
implementation("androidx.compose.material:material-icons-core:1.7.8")
implementation("androidx.compose.material3:material3-window-size-class:1.3.2")
2.代码示例
@Composable
fun PullToRefreshBasicPreview() {
PullToRefreshStatefulWrapper { itemCount, isRefreshing, onRefresh ->
val items = List(itemCount) { "Item ${itemCount - it}" }
PullToRefreshBasicSample(items, isRefreshing, onRefresh)
}
}
//拖拽动作响应,协程中添加list的条数。
@Composable
fun PullToRefreshStatefulWrapper(
content: @Composable (itemCount: Int, isRefreshing: Boolean, onRefresh: () -> Unit) -> Unit
) {
var itemCount by remember { mutableIntStateOf(10) }
var isRefreshing by remember { mutableStateOf(false) }
val coroutineScope = rememberCoroutineScope()
val onRefresh: () -> Unit = {
isRefreshing = true
coroutineScope.launch {
delay(1000)
itemCount += 5
isRefreshing = false
}
}
content(itemCount, isRefreshing, onRefresh)
}
//拖拽动作界面响应
@Composable
fun PullToRefreshBasicSample(
items: List<String>,
isRefreshing: Boolean,
onRefresh: () -> Unit,
modifier: Modifier = Modifier
) {
PullToRefreshBox(
isRefreshing = isRefreshing,
onRefresh = onRefresh,
modifier = modifier,
/*indicator = {
Indicator(
modifier = Modifier.align(Alignment.TopCenter),
isRefreshing = isRefreshing,
containerColor = MaterialTheme.colorScheme.primaryContainer,
color = MaterialTheme.colorScheme.onPrimaryContainer,
state = state
)
},*/
//可以通过修改此属性,定制拖拽图标样式,也可以自定义Indicator。
) {
LazyColumn(Modifier.fillMaxSize()) {
items(items) {
ListItem({ Text(text = it) })
}
}
}
}