diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt
index e46a956..fde61a7 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt
@@ -16,6 +16,8 @@ import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
import de.jrpie.android.launcher.databinding.SettingsBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
+import de.jrpie.android.launcher.preferences.theme.Background
+import de.jrpie.android.launcher.preferences.theme.ColorTheme
import de.jrpie.android.launcher.saveListActivityChoice
import de.jrpie.android.launcher.ui.UIObject
import de.jrpie.android.launcher.ui.settings.actions.SettingsFragmentActions
@@ -33,8 +35,24 @@ import de.jrpie.android.launcher.ui.settings.meta.SettingsFragmentMeta
*/
class SettingsActivity : AppCompatActivity(), UIObject {
- private var sharedPreferencesListener =
+ private val solidBackground = LauncherPreferences.theme().background() == Background.SOLID
+ || LauncherPreferences.theme().colorTheme() == ColorTheme.LIGHT
+
+ private val sharedPreferencesListener =
SharedPreferences.OnSharedPreferenceChangeListener { _, prefKey ->
+ if (solidBackground &&
+ (prefKey == LauncherPreferences.theme().keys().background() ||
+ prefKey == LauncherPreferences.theme().keys().colorTheme())
+ ) {
+ // Switching from solid background to a transparent background using `recreate()`
+ // causes a very ugly glitch, making the settings unreadable.
+ // This ugly workaround causes a jump to the top of the list, but at least
+ // the text stays readable.
+ val i = Intent(this, SettingsActivity::class.java)
+ .also { it.putExtra("tab", 1) }
+ finish()
+ startActivity(i)
+ } else
if (prefKey?.startsWith("theme.") == true ||
prefKey?.startsWith("display.") == true
) {
@@ -59,6 +77,9 @@ class SettingsActivity : AppCompatActivity(), UIObject {
val tabs: TabLayout = findViewById(R.id.settings_tabs)
tabs.setupWithViewPager(viewPager)
+ if (intent.hasExtra("tab")) {
+ tabs.getTabAt(intent.getIntExtra("tab", 0))?.select()
+ }
}
override fun onStart() {
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 11a92fc..02d809e 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -78,10 +78,10 @@
- @android:color/transparent
- true
+ - @null