From fd237ee1888231c7046651cfb6930de24a1444ae Mon Sep 17 00:00:00 2001 From: Tlaster Date: Thu, 14 May 2020 14:34:03 +0800 Subject: [PATCH] Add auto hide tabs support --- .../constant/SharedPreferenceConstants.java | 2 ++ .../mariotaku/twidere/activity/HomeActivity.kt | 15 ++++++++++----- .../mariotaku/twidere/constant/PreferenceKeys.kt | 1 + twidere/src/main/res/values/strings.xml | 2 ++ twidere/src/main/res/xml/preferences_theme.xml | 13 ++++++++++--- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java index 28c2f5228..5952810dc 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java @@ -287,6 +287,8 @@ public interface SharedPreferenceConstants { String KEY_TAB_POSITION = "tab_position"; @ExportablePreference(STRING) String KEY_YANDEX_KEY = "yandex_key"; + @ExportablePreference(BOOLEAN) + String KEY_AUTO_HIDE_TABS = "auto_hide_tabs"; // Internal preferences diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/HomeActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/HomeActivity.kt index e4feba84f..1feb6a6c2 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/HomeActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/HomeActivity.kt @@ -392,7 +392,7 @@ class HomeActivity : BaseActivity(), OnClickListener, OnPageChangeListener, Supp override fun getSystemWindowInsets(caller: Fragment, insets: Rect): Boolean { if (caller === leftDrawerFragment) return super.getSystemWindowInsets(caller, insets) - if (mainTabs == null || homeContent == null) return false + if (mainTabs == null || homeContent == null || toolbar == null || !toolbar.isVisible) return false val height = mainTabs.height if (preferences[tabPositionKey] == SharedPreferenceConstants.VALUE_TAB_POSITION_TOP) { if (height != 0) { @@ -589,7 +589,7 @@ class HomeActivity : BaseActivity(), OnClickListener, OnPageChangeListener, Supp override var controlBarOffset: Float get() { - if (mainTabs.columns > 1) { + if (mainTabs.columns > 1 || !toolbar.isVisible) { val lp = actionsButton.layoutParams val total: Float total = if (lp is MarginLayoutParams) { @@ -608,7 +608,7 @@ class HomeActivity : BaseActivity(), OnClickListener, OnPageChangeListener, Supp } set(offset) { if (preferences[tabPositionKey] == SharedPreferenceConstants.VALUE_TAB_POSITION_TOP) { - val translationY = if (mainTabs.columns > 1) { + val translationY = if (mainTabs.columns > 1 || !toolbar.isVisible) { 0 } else { (controlBarHeight * (offset - 1)).toInt() @@ -623,7 +623,7 @@ class HomeActivity : BaseActivity(), OnClickListener, OnPageChangeListener, Supp } notifyControlBarOffsetChanged() } else { - val translationY = if (mainTabs.columns > 1) { + val translationY = if (mainTabs.columns > 1 || !toolbar.isVisible) { 0 } else { (toolbar.height * (offset - 1)).toInt() @@ -855,7 +855,12 @@ class HomeActivity : BaseActivity(), OnClickListener, OnPageChangeListener, Supp pagerAdapter.hasMultipleColumns = false mainTabs.columns = 1 } - if (preferences[tabPositionKey] == SharedPreferenceConstants.VALUE_TAB_POSITION_TOP) { + if (pagerAdapter.count == 1 && preferences[autoHideTabs]) { + toolbar.isVisible = false + actionsButton.updateLayoutParams { + addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE) + } + } else if (preferences[tabPositionKey] == SharedPreferenceConstants.VALUE_TAB_POSITION_TOP) { toolbar.updateLayoutParams { addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE) } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt index 90978380f..df370485a 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/constant/PreferenceKeys.kt @@ -88,6 +88,7 @@ val promotionsEnabledKey = KBooleanKey("promotions_enabled", false) val translationDestinationKey = KNullableStringKey(KEY_TRANSLATION_DESTINATION, null) val tabPositionKey = KStringKey(KEY_TAB_POSITION, SharedPreferenceConstants.DEFAULT_TAB_POSITION) val yandexKeyKey = KStringKey(SharedPreferenceConstants.KEY_YANDEX_KEY, TwidereConstants.YANDEX_KEY) +val autoHideTabs = KBooleanKey(SharedPreferenceConstants.KEY_AUTO_HIDE_TABS, true) object cacheSizeLimitKey : KSimpleKey(KEY_CACHE_SIZE_LIMIT, 300) { override fun read(preferences: SharedPreferences) = preferences.getInt(key, def).coerceIn(100, diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml index 0afeeb105..82408e8a5 100644 --- a/twidere/src/main/res/values/strings.xml +++ b/twidere/src/main/res/values/strings.xml @@ -890,6 +890,7 @@ Preload media only on free networks like Wi-Fi When \"Remember position\" enabled Now you can set location separately in tab settings. + Hide Tab when there\'s only one tab Accounts Advanced Compatibility mode @@ -908,6 +909,7 @@ Multi column tabs Navbar style Tab position + Auto hide Tab Channels Ringtone App language diff --git a/twidere/src/main/res/xml/preferences_theme.xml b/twidere/src/main/res/xml/preferences_theme.xml index 2b00f35d5..fa86846d7 100644 --- a/twidere/src/main/res/xml/preferences_theme.xml +++ b/twidere/src/main/res/xml/preferences_theme.xml @@ -77,10 +77,17 @@ - + + + \ No newline at end of file