Fix recyclerview item disappearing

This commit is contained in:
FooIbar committed 2023-11-12 01:39:16 +08:00
1 parent 11b7bbd7ef
commit c8ade4d750
8 files changed
+18 -20

No files matched your search

@@ -6,6 +6,7 @@ import android.graphics.drawable.ShapeDrawable
import android.os.Parcelable
import android.util.AttributeSet
import androidx.core.graphics.ColorUtils
import eu.kanade.tachiyomi.util.system.dpToPx
import rikka.core.res.resolveColor
@SuppressLint("PrivateResource")
@@ -22,6 +23,7 @@ class ThemedSwipeRefreshLayout @JvmOverloads constructor(
val backgroundColor = ColorUtils.compositeColors(overlayColor, surfaceColor)
(mCircleView.background as ShapeDrawable).paint.color = backgroundColor
setColorSchemeColors(context.theme.resolveColor(com.google.android.material.R.attr.colorAccent))
setProgressViewOffset(true, 64.dpToPx, 128.dpToPx)
}
override fun onSaveInstanceState(): Parcelable? {
@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ElevatedCard
@@ -32,6 +33,7 @@ import androidx.compose.ui.platform.AbstractComposeView
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
@@ -81,7 +83,10 @@ class SearchLayout @JvmOverloads constructor(
}
}
Mdc3Theme {
Column(modifier = Modifier.imePadding().verticalScroll(rememberScrollState()).navigationBarsPadding().padding(horizontal = dimensionResource(id = R.dimen.search_layout_margin_h))) {
Column(
modifier = Modifier.imePadding().statusBarsPadding().padding(top = 72.dp)
.verticalScroll(rememberScrollState()).navigationBarsPadding().padding(horizontal = dimensionResource(id = R.dimen.search_layout_margin_h)),
) {
AnimatedVisibility(visible = vm.isNormalMode) {
ElevatedCard(modifier = Modifier.fillMaxWidth().padding(vertical = dimensionResource(id = R.dimen.search_layout_margin_v))) {
Column(modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.search_category_padding_h), vertical = dimensionResource(id = R.dimen.search_category_padding_v))) {
@@ -296,8 +296,6 @@ class DownloadsScene :
layoutManager.setStrategy(STRATEGY_MIN_SIZE)
layoutManager.supportsPredictiveItemAnimations = false
recyclerView.layoutManager = layoutManager
recyclerView.clipToPadding = false
recyclerView.clipChildren = false
val interval = resources.getDimensionPixelOffset(R.dimen.gallery_list_interval)
val decoration = object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
@@ -89,7 +89,6 @@ import com.hippo.ehviewer.util.lazyMut
import com.hippo.ehviewer.util.setValue
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withIOContext
import eu.kanade.tachiyomi.util.system.dpToPx
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
@@ -329,7 +328,6 @@ class FavoritesScene : SearchBarScene() {
drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
binding.tip.setCompoundDrawables(null, drawable, null, null)
binding.tip.setOnClickListener { mAdapter?.retry() }
binding.refreshLayout.setProgressViewOffset(true, 0, 64.dpToPx)
binding.refreshLayout.setOnRefreshListener { switchFav(urlBuilder.favCat) }
val transition = ViewTransition(binding.refreshLayout, binding.progress, binding.tip)
val empty = getString(R.string.gallery_list_empty_hit)
@@ -102,7 +102,6 @@ import com.hippo.ehviewer.util.setValue
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withIOContext
import eu.kanade.tachiyomi.util.lang.withUIContext
import eu.kanade.tachiyomi.util.system.dpToPx
import java.io.File
import java.time.Instant
import java.time.LocalDateTime
@@ -321,7 +320,6 @@ class GalleryListScene : SearchBarScene() {
drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
binding.tip.setCompoundDrawables(null, drawable, null, null)
binding.tip.setOnClickListener { mAdapter?.retry() }
binding.refreshLayout.setProgressViewOffset(true, 0, 64.dpToPx)
binding.refreshLayout.setOnRefreshListener {
mUrlBuilder.setIndex(null, true)
mUrlBuilder.mJumpTo = null
@@ -14,9 +14,9 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.union
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.text2.input.clearText
@@ -265,8 +265,7 @@ fun SearchBarScreen(
},
) {
LazyColumn(
modifier = Modifier.imePadding(),
contentPadding = WindowInsets.navigationBars.asPaddingValues(),
contentPadding = WindowInsets.navigationBars.union(WindowInsets.ime).asPaddingValues(),
) {
items(mSuggestionList) {
ListItem(
@@ -339,6 +338,7 @@ abstract class SearchBarScene : BaseScene() {
return ComposeWithMD3 {
val density = LocalDensity.current
val fabPadding = with(density) { 16.dp.roundToPx() }
val margin = with(density) { 8.dp.roundToPx() }
SearchBarScreen(
initialQuery = initialQuery,
hint = hint,
@@ -352,19 +352,19 @@ abstract class SearchBarScene : BaseScene() {
TrailingIcon()
},
) { contentPadding ->
val topPadding = with(density) { contentPadding.calculateTopPadding().roundToPx() }
val bottomPadding = with(density) { contentPadding.calculateBottomPadding().roundToPx() }
AndroidViewBinding(
modifier = Modifier.padding(top = contentPadding.calculateTopPadding()).fillMaxSize(),
modifier = Modifier.fillMaxSize(),
factory = { inflater, parent, _ ->
parent.clipChildren = false
onCreateViewWithToolbar(inflater, parent, savedInstanceState).apply {
recyclerView.addOnScrollListener(onScrollListener)
}
},
) {
fabLayout.updatePadding(bottom = fabPadding + bottomPadding)
fastScroller.updatePadding(bottom = bottomPadding)
recyclerView.updatePadding(bottom = bottomPadding)
fastScroller.updatePadding(top = topPadding + margin, bottom = bottomPadding)
recyclerView.updatePadding(top = topPadding + margin, bottom = bottomPadding)
}
}
}
+1 -1
View File
@@ -21,13 +21,13 @@
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
app:layout_behavior="@string/searchbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingHorizontal="@dimen/gallery_list_margin_h"
android:paddingVertical="@dimen/gallery_list_margin_v" />
@@ -19,7 +19,6 @@
android:id="@+id/content_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
app:layout_behavior="@string/searchbar_scrolling_view_behavior">
<com.google.android.material.progressindicator.CircularProgressIndicator
@@ -41,14 +40,12 @@
<androidx.swiperefreshlayout.widget.ThemedSwipeRefreshLayout
android:id="@+id/refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false">
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingHorizontal="@dimen/gallery_list_margin_h"
android:paddingVertical="@dimen/gallery_list_margin_v" />