diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/LoadMore.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/LoadMore.kt
index 8a15c838..633d960f 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/LoadMore.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/widgets/compose/LoadMore.kt
@@ -30,7 +30,13 @@ fun LoadMoreLayout(
onLoadMore: () -> Unit,
enableLoadMore: Boolean = true,
loadEnd: Boolean = false,
- indicator: @Composable (loadEnd: Boolean) -> Unit = { DefaultIndicator(loadEnd = it) },
+ indicator: @Composable (Boolean, Boolean, Boolean) -> Unit = { loading, end, willLoad ->
+ DefaultIndicator(
+ isLoading = loading,
+ loadEnd = end,
+ willLoad = willLoad
+ )
+ },
content: @Composable () -> Unit
) {
val loadDistance = with(LocalDensity.current) { LoadDistance.toPx() }
@@ -68,7 +74,7 @@ fun LoadMoreLayout(
.offset { IntOffset(0, swipeableState.offset.value.roundToInt()) }
) {
if (enableLoadMore && swipeableState.offset.value != loadDistance) {
- indicator(loadEnd)
+ indicator(isLoading, loadEnd, swipeableState.targetValue)
}
}
@@ -78,9 +84,13 @@ fun LoadMoreLayout(
@Composable
fun DefaultIndicator(
+ isLoading: Boolean,
loadEnd: Boolean,
+ willLoad: Boolean,
loadingText: String = stringResource(id = R.string.text_loading),
loadEndText: String = stringResource(id = R.string.no_more),
+ pullToLoadText: String = stringResource(id = R.string.pull_to_load),
+ releaseToLoadText: String = stringResource(id = R.string.release_to_load),
) {
Surface(
elevation = 8.dp,
@@ -89,16 +99,26 @@ fun DefaultIndicator(
) {
Row(
modifier = Modifier
+ .height(IntrinsicSize.Min)
.padding(10.dp)
.animateContentSize(),
verticalAlignment = Alignment.CenterVertically
) {
- if (!loadEnd) {
- CircularProgressIndicator(modifier = Modifier.size(20.dp), strokeWidth = 3.dp, color = MaterialTheme.colors.onSurface)
+ if (isLoading) {
+ CircularProgressIndicator(
+ modifier = Modifier.size(20.dp),
+ strokeWidth = 3.dp,
+ color = MaterialTheme.colors.onSurface
+ )
Spacer(modifier = Modifier.width(8.dp))
Text(text = loadingText, modifier = Modifier.padding(horizontal = 8.dp))
- } else {
+ } else if (loadEnd) {
Text(text = loadEndText, modifier = Modifier.padding(horizontal = 8.dp))
+ } else {
+ Text(
+ text = if (willLoad) releaseToLoadText else pullToLoadText,
+ modifier = Modifier.padding(horizontal = 8.dp)
+ )
}
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dc73bbfe..433851f0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -680,4 +680,6 @@
%d 楼的回复
回复
%d 条回复
+ 继续上拉加载
+ 松开加载