From 34fb4af9feb65e7c8a36e34d6f2aca735142b3c2 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 31 Aug 2023 19:10:15 +0300 Subject: [PATCH] Fix color scheme preference --- .../settings/utils/ThemeChooserPreference.kt | 15 ++- app/src/main/res/layout/preference_theme.xml | 93 ++++++++----------- 2 files changed, 49 insertions(+), 59 deletions(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/utils/ThemeChooserPreference.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/utils/ThemeChooserPreference.kt index 8c489a364..5a92f92db 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/utils/ThemeChooserPreference.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/utils/ThemeChooserPreference.kt @@ -12,6 +12,7 @@ import android.view.ViewTreeObserver import android.widget.HorizontalScrollView import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isVisible +import androidx.core.view.updatePaddingRelative import androidx.customview.view.AbsSavedState import androidx.preference.Preference import androidx.preference.PreferenceViewHolder @@ -52,7 +53,11 @@ class ThemeChooserPreference @JvmOverloads constructor( binding.linear.removeAllViews() for (theme in entries) { val context = ContextThemeWrapper(context, theme.styleResId) - val item = ItemColorSchemeBinding.inflate(LayoutInflater.from(context), binding.linear, false) + val item = + ItemColorSchemeBinding.inflate(LayoutInflater.from(context), binding.linear, false) + if (binding.linear.childCount == 0) { + item.root.updatePaddingRelative(start = 0) + } val isSelected = theme == currentValue item.card.isChecked = isSelected item.card.strokeWidth = if (isSelected) context.resources.getDimensionPixelSize( @@ -76,7 +81,8 @@ class ThemeChooserPreference @JvmOverloads constructor( } binding.scrollView.viewTreeObserver.run { scrollPersistListener?.let { removeOnScrollChangedListener(it) } - scrollPersistListener = ScrollPersistListener(WeakReference(binding.scrollView), lastScrollPosition) + scrollPersistListener = + ScrollPersistListener(WeakReference(binding.scrollView), lastScrollPosition) addOnScrollChangedListener(scrollPersistListener) } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -133,7 +139,7 @@ class ThemeChooserPreference @JvmOverloads constructor( constructor( superState: Parcelable, - scrollPosition: Int + scrollPosition: Int, ) : super(superState) { this.scrollPosition = scrollPosition } @@ -151,7 +157,8 @@ class ThemeChooserPreference @JvmOverloads constructor( @Suppress("unused") @JvmField val CREATOR: Parcelable.Creator = object : Parcelable.Creator { - override fun createFromParcel(`in`: Parcel) = SavedState(`in`, SavedState::class.java.classLoader) + override fun createFromParcel(`in`: Parcel) = + SavedState(`in`, SavedState::class.java.classLoader) override fun newArray(size: Int): Array = arrayOfNulls(size) } diff --git a/app/src/main/res/layout/preference_theme.xml b/app/src/main/res/layout/preference_theme.xml index 643e20b39..085effa93 100644 --- a/app/src/main/res/layout/preference_theme.xml +++ b/app/src/main/res/layout/preference_theme.xml @@ -8,70 +8,53 @@ android:clipChildren="false" android:clipToPadding="false" android:gravity="center_vertical" - android:minHeight="?android:attr/listPreferredItemHeightSmall" - android:orientation="horizontal" - android:paddingStart="?android:attr/listPreferredItemPaddingStart" - android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:minHeight="?android:attr/listPreferredItemHeight" + android:orientation="vertical" + android:paddingVertical="8dp" tools:ignore="PrivateResource"> - - - + + + android:descendantFocusability="blocksDescendants" + android:scrollbars="none"> + android:orientation="horizontal" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" /> - + - + - - - - - - - -