Add auto hide tabs support

This commit is contained in:
Tlaster 2020-05-14 14:34:03 +08:00
parent 478a7dd1ae
commit fd237ee188
5 changed files with 25 additions and 8 deletions

View File

@ -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

View File

@ -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<RelativeLayout.LayoutParams> {
addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE)
}
} else if (preferences[tabPositionKey] == SharedPreferenceConstants.VALUE_TAB_POSITION_TOP) {
toolbar.updateLayoutParams<RelativeLayout.LayoutParams> {
addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE)
}

View File

@ -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<Int>(KEY_CACHE_SIZE_LIMIT, 300) {
override fun read(preferences: SharedPreferences) = preferences.getInt(key, def).coerceIn(100,

View File

@ -890,6 +890,7 @@
<string name="preference_summary_media_preload_non_metered_network">Preload media only on free networks like Wi-Fi</string>
<string name="preference_summary_sync_timeline_positions">When \"Remember position\" enabled</string>
<string name="preference_summary_trends_location">Now you can set location separately in tab settings.</string>
<string name="preference_summary_auto_hide_tabs">Hide Tab when there\'s only one tab</string>
<string name="preference_title_accounts">Accounts</string>
<string name="preference_title_advanced">Advanced</string>
<string name="preference_title_auto_refresh_compatibility_mode">Compatibility mode</string>
@ -908,6 +909,7 @@
<string name="preference_title_multi_column_tabs">Multi column tabs</string>
<string name="preference_title_navbar_style">Navbar style</string>
<string name="preference_title_tab_position">Tab position</string>
<string name="preference_title_auto_hide_tab">Auto hide Tab</string>
<string name="preference_title_notification_channels">Channels</string>
<string name="preference_title_notification_ringtone">Ringtone</string>
<string name="preference_title_override_language">App language</string>

View File

@ -77,10 +77,17 @@
<extra
android:name="should_recreate"
android:value="true"/>
<extra
android:name="recreate_activity"
android:value="true"/>
</org.mariotaku.twidere.preference.EntrySummaryListPreference>
<SwitchPreferenceCompat
android:order="27"
android:defaultValue="true"
android:key="auto_hide_tabs"
android:summary="@string/preference_summary_auto_hide_tabs"
android:title="@string/preference_title_auto_hide_tab">
<extra
android:name="should_recreate"
android:value="true"/>
</SwitchPreferenceCompat>
</PreferenceScreen>