diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt
index cf0f4cf43..95f29cd64 100644
--- a/app/src/main/java/io/legado/app/App.kt
+++ b/app/src/main/java/io/legado/app/App.kt
@@ -78,26 +78,24 @@ class App : Application() {
ThemeStore.editTheme(this)
.primaryColor(
getPrefInt("colorPrimaryNight", getCompatColor(R.color.md_blue_grey_600))
- )
- .accentColor(
+ ).accentColor(
getPrefInt("colorAccentNight", getCompatColor(R.color.md_brown_800))
- )
- .backgroundColor(
+ ).backgroundColor(
getPrefInt("colorBackgroundNight", getCompatColor(R.color.shine_color))
- )
- .apply()
+ ).bottomBackground(
+ getPrefInt("colorBottomBackgroundNight", getCompatColor(R.color.md_grey_850))
+ ).apply()
} else {
ThemeStore.editTheme(this)
.primaryColor(
getPrefInt("colorPrimary", getCompatColor(R.color.md_indigo_800))
- )
- .accentColor(
+ ).accentColor(
getPrefInt("colorAccent", getCompatColor(R.color.md_red_600))
- )
- .backgroundColor(
+ ).backgroundColor(
getPrefInt("colorBackground", getCompatColor(R.color.md_grey_100))
- )
- .apply()
+ ).bottomBackground(
+ getPrefInt("colorBottomBackground", getCompatColor(R.color.md_grey_200))
+ ).apply()
}
}
diff --git a/app/src/main/java/io/legado/app/lib/theme/ATH.kt b/app/src/main/java/io/legado/app/lib/theme/ATH.kt
index e20741987..0bcbb114b 100644
--- a/app/src/main/java/io/legado/app/lib/theme/ATH.kt
+++ b/app/src/main/java/io/legado/app/lib/theme/ATH.kt
@@ -205,7 +205,7 @@ object ATH {
.setSelectedColor(ThemeStore.accentColor(bottom_navigation_view.context)).create()
itemIconTintList = colorStateList
itemTextColor = colorStateList
- itemBackgroundResource = R.color.background_menu
+ setBackgroundColor(ThemeStore.bottomBackground(context))
}
}
diff --git a/app/src/main/java/io/legado/app/lib/theme/MaterialValueHelper.kt b/app/src/main/java/io/legado/app/lib/theme/MaterialValueHelper.kt
index 1618884b5..fab853c6b 100644
--- a/app/src/main/java/io/legado/app/lib/theme/MaterialValueHelper.kt
+++ b/app/src/main/java/io/legado/app/lib/theme/MaterialValueHelper.kt
@@ -54,6 +54,9 @@ val Context.accentColor: Int
val Context.backgroundColor: Int
get() = ThemeStore.backgroundColor(this)
+val Context.bottomBackground: Int
+ get() = ThemeStore.bottomBackground(this)
+
val Context.primaryTextColor: Int
get() = getPrimaryTextColor(isDarkTheme)
@@ -78,6 +81,9 @@ val Fragment.accentColor: Int
val Fragment.backgroundColor: Int
get() = ThemeStore.backgroundColor(requireContext())
+val Fragment.bottomBackground: Int
+ get() = ThemeStore.bottomBackground(requireContext())
+
val Fragment.primaryTextColor: Int
get() = requireContext().getPrimaryTextColor(isDarkTheme)
diff --git a/app/src/main/java/io/legado/app/lib/theme/ThemeStore.kt b/app/src/main/java/io/legado/app/lib/theme/ThemeStore.kt
index 5335a6830..927fc2fb0 100644
--- a/app/src/main/java/io/legado/app/lib/theme/ThemeStore.kt
+++ b/app/src/main/java/io/legado/app/lib/theme/ThemeStore.kt
@@ -147,6 +147,11 @@ private constructor(private val mContext: Context) : ThemeStoreInterface {
return this
}
+ override fun bottomBackground(color: Int): ThemeStore {
+ mEditor.putInt(ThemeStorePrefKeys.KEY_BOTTOM_BACKGROUND, color)
+ return this
+ }
+
override fun coloredStatusBar(colored: Boolean): ThemeStore {
mEditor.putBoolean(ThemeStorePrefKeys.KEY_APPLY_PRIMARYDARK_STATUSBAR, colored)
return this
@@ -279,6 +284,15 @@ private constructor(private val mContext: Context) : ThemeStoreInterface {
)
}
+ @CheckResult
+ @ColorInt
+ fun bottomBackground(context: Context): Int {
+ return prefs(context).getInt(
+ ThemeStorePrefKeys.KEY_BOTTOM_BACKGROUND,
+ ATHUtils.resolveColor(context, android.R.attr.colorBackground)
+ )
+ }
+
@CheckResult
fun coloredStatusBar(context: Context): Boolean {
return prefs(context).getBoolean(ThemeStorePrefKeys.KEY_APPLY_PRIMARYDARK_STATUSBAR, true)
diff --git a/app/src/main/java/io/legado/app/lib/theme/ThemeStoreInterface.kt b/app/src/main/java/io/legado/app/lib/theme/ThemeStoreInterface.kt
index 55584b633..521b9d237 100644
--- a/app/src/main/java/io/legado/app/lib/theme/ThemeStoreInterface.kt
+++ b/app/src/main/java/io/legado/app/lib/theme/ThemeStoreInterface.kt
@@ -78,8 +78,12 @@ internal interface ThemeStoreInterface {
fun textColorSecondaryInverseAttr(@AttrRes colorAttr: Int): ThemeStore
+ // Background
+
fun backgroundColor(@ColorInt color: Int): ThemeStore
+ fun bottomBackground(@ColorInt color: Int): ThemeStore
+
// Toggle configurations
fun coloredStatusBar(colored: Boolean): ThemeStore
diff --git a/app/src/main/java/io/legado/app/lib/theme/ThemeStorePrefKeys.kt b/app/src/main/java/io/legado/app/lib/theme/ThemeStorePrefKeys.kt
index c934ef176..a2ab19d60 100644
--- a/app/src/main/java/io/legado/app/lib/theme/ThemeStorePrefKeys.kt
+++ b/app/src/main/java/io/legado/app/lib/theme/ThemeStorePrefKeys.kt
@@ -22,6 +22,7 @@ object ThemeStorePrefKeys {
const val KEY_TEXT_COLOR_SECONDARY_INVERSE = "text_color_secondary_inverse"
const val KEY_BACKGROUND_COLOR = "backgroundColor"
+ const val KEY_BOTTOM_BACKGROUND = "bottomBackground"
const val KEY_APPLY_PRIMARYDARK_STATUSBAR = "apply_primarydark_statusbar"
const val KEY_APPLY_PRIMARY_NAVBAR = "apply_primary_navbar"
diff --git a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt
index 1a1851ca1..0652350c5 100644
--- a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt
+++ b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt
@@ -52,7 +52,10 @@ class ThemeConfigFragment : PreferenceFragmentCompat(), SharedPreferences.OnShar
"transparentStatusBar" -> {
recreateActivities()
}
- "colorPrimary", "colorAccent", "colorBackground" -> {
+ "colorPrimary",
+ "colorAccent",
+ "colorBackground",
+ "colorBottomBackground" -> {
if (backgroundIsDark(sharedPreferences)) {
alert {
title = "白天背景太暗"
@@ -73,7 +76,10 @@ class ThemeConfigFragment : PreferenceFragmentCompat(), SharedPreferences.OnShar
upTheme(false)
}
}
- "colorPrimaryNight", "colorAccentNight", "colorBackgroundNight" -> {
+ "colorPrimaryNight",
+ "colorAccentNight",
+ "colorBackgroundNight",
+ "colorBottomBackgroundNight" -> {
if (backgroundIsLight(sharedPreferences)) {
alert {
title = "夜间背景太亮"
diff --git a/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt b/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt
index 079abc480..dc37085b0 100644
--- a/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt
+++ b/app/src/main/java/io/legado/app/ui/widget/SelectActionBar.kt
@@ -9,6 +9,7 @@ import androidx.annotation.MenuRes
import androidx.annotation.StringRes
import androidx.appcompat.widget.PopupMenu
import io.legado.app.R
+import io.legado.app.lib.theme.bottomBackground
import io.legado.app.utils.dp
import io.legado.app.utils.visible
import kotlinx.android.synthetic.main.view_select_action_bar.view.*
@@ -19,7 +20,7 @@ class SelectActionBar(context: Context, attrs: AttributeSet?) : FrameLayout(cont
private var selMenu: PopupMenu? = null
init {
- setBackgroundResource(R.color.background_menu)
+ setBackgroundColor(context.bottomBackground)
elevation = 10.dp.toFloat()
View.inflate(context, R.layout.view_select_action_bar, this)
cb_selected_all.setOnCheckedChangeListener { buttonView, isChecked ->
diff --git a/app/src/main/res/xml/pref_config_theme.xml b/app/src/main/res/xml/pref_config_theme.xml
index 3380e4669..fe0d24ca2 100644
--- a/app/src/main/res/xml/pref_config_theme.xml
+++ b/app/src/main/res/xml/pref_config_theme.xml
@@ -60,6 +60,14 @@
app:cpv_dialogType="preset"
app:iconSpaceReserved="false" />
+
+
+
+
\ No newline at end of file