From 977550c7b08473a34e706933b52e0a53a9066894 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Mon, 26 Jun 2017 22:23:41 +0800 Subject: [PATCH] improved users lists navbar style --- .../twidere/activity/LinkHandlerActivity.kt | 9 ++++++- .../fragment/AbsToolbarTabPagesFragment.kt | 16 +++++++++++-- .../twidere/fragment/UserFragment.kt | 4 +++- .../twidere/fragment/iface/IBaseFragment.kt | 24 +++++++++++-------- .../layout-sw600dp/activity_link_handler.xml | 3 ++- .../main/res/layout/activity_link_handler.xml | 3 ++- .../res/layout/fragment_toolbar_tab_pages.xml | 5 ++-- 7 files changed, 46 insertions(+), 18 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt index 87288195d..953930ad2 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/LinkHandlerActivity.kt @@ -31,6 +31,7 @@ import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentManager.FragmentLifecycleCallbacks import android.support.v4.app.NavUtils +import android.support.v4.view.ViewCompat import android.support.v4.view.WindowCompat import android.support.v4.view.WindowInsetsCompat import android.support.v7.widget.Toolbar @@ -66,6 +67,7 @@ import org.mariotaku.twidere.fragment.search.MastodonSearchFragment import org.mariotaku.twidere.fragment.search.SearchFragment import org.mariotaku.twidere.fragment.statuses.* import org.mariotaku.twidere.fragment.users.* +import org.mariotaku.twidere.graphic.ActionBarColorDrawable import org.mariotaku.twidere.graphic.EmptyDrawable import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.analyzer.PurchaseFinished @@ -136,6 +138,7 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControl supportRequestWindowFeature(Window.FEATURE_NO_TITLE) supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_MODE_OVERLAY) } + ViewCompat.setOnApplyWindowInsetsListener(window.decorView, this) contentFragmentId = android.R.id.content } else { setContentView(R.layout.activity_link_handler) @@ -166,6 +169,8 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControl setTitle(linkId, uri) finishOnly = uri.getQueryParameter(QUERY_PARAM_FINISH_ONLY)?.toBoolean() ?: false + supportActionBar?.setBackgroundDrawable(ActionBarColorDrawable.create(overrideTheme.colorToolbar, + true)) if (fragment is IToolBarSupportFragment) { ThemeUtils.setCompatContentViewOverlay(window, EmptyDrawable()) } @@ -212,7 +217,9 @@ class LinkHandlerActivity : BaseActivity(), SystemWindowInsetsCallback, IControl if (fragment is IBaseFragment<*>) { fragment.requestApplyInsets() } - + if (fragment is IToolBarSupportFragment) { + return result + } return result.consumeSystemWindowInsets() } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsToolbarTabPagesFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsToolbarTabPagesFragment.kt index 21f775759..c9ca7ca8f 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsToolbarTabPagesFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AbsToolbarTabPagesFragment.kt @@ -6,6 +6,7 @@ import android.graphics.Rect import android.os.Bundle import android.support.v4.app.Fragment import android.support.v4.app.FragmentActivity +import android.support.v4.view.OnApplyWindowInsetsListener import android.support.v4.view.ViewPager.OnPageChangeListener import android.support.v7.widget.Toolbar import android.view.KeyEvent @@ -28,6 +29,7 @@ import org.mariotaku.twidere.fragment.iface.RefreshScrollTopInterface import org.mariotaku.twidere.fragment.iface.SupportFragmentCallback import org.mariotaku.twidere.util.KeyboardShortcutsHandler import org.mariotaku.twidere.util.KeyboardShortcutsHandler.KeyboardShortcutCallback +import org.mariotaku.twidere.util.ThemeUtils import org.mariotaku.twidere.view.TabPagerIndicator import org.mariotaku.twidere.view.iface.IExtendedView @@ -52,6 +54,11 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte toolbarTabs.setViewPager(viewPager) toolbarTabs.setTabDisplayOption(TabPagerIndicator.DisplayOption.LABEL) + tabPagesFragmentView.applyWindowInsetsListener = OnApplyWindowInsetsListener listener@ { _, insets -> + val top = insets.systemWindowInsetTop + tabPagesFragmentView.setPadding(0, top, 0, 0) + return@listener insets + } addTabs(pagerAdapter) toolbarTabs.notifyDataSetChanged() @@ -138,8 +145,13 @@ abstract class AbsToolbarTabPagesFragment : BaseFragment(), RefreshScrollTopInte } override fun getSystemWindowInsets(caller: Fragment, insets: Rect): Boolean { - if (toolbarTabs == null) return false - insets.set(0, toolbarContainer.height, 0, 0) + insetsCallback?.getSystemWindowInsets(this, insets) + val height = toolbarContainer.height + if (height != 0) { + insets.top = height + } else { + insets.top = ThemeUtils.getActionBarHeight(context) + } return true } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt index f74db266e..8f7f3c1b8 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/UserFragment.kt @@ -555,7 +555,9 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener, } override fun getSystemWindowInsets(caller: Fragment, insets: Rect): Boolean { - return false + insetsCallback?.getSystemWindowInsets(this, insets) + insets.top = 0 + return true } fun getUserInfo(accountKey: UserKey, userKey: UserKey?, screenName: String?, diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/iface/IBaseFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/iface/IBaseFragment.kt index e64054926..16282b8ae 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/iface/IBaseFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/iface/IBaseFragment.kt @@ -39,18 +39,22 @@ interface IBaseFragment { val tabId: Long get() = (this as Fragment).arguments?.getLong(IntentConstants.EXTRA_TAB_ID, -1L) ?: -1L + val insetsCallback: SystemWindowInsetsCallback? + get() { + val fragment = this as Fragment + val activity = fragment.activity + val parentFragment = fragment.parentFragment + if (parentFragment is SystemWindowInsetsCallback) { + return parentFragment + } else if (activity is SystemWindowInsetsCallback) { + return activity + } + return null + } + fun requestApplyInsets() { val fragment = this as Fragment - val activity = fragment.activity - val parentFragment = fragment.parentFragment - val callback: SystemWindowInsetsCallback - if (parentFragment is SystemWindowInsetsCallback) { - callback = parentFragment - } else if (activity is SystemWindowInsetsCallback) { - callback = activity - } else { - return - } + val callback = insetsCallback ?: return val insets = Rect() if (callback.getSystemWindowInsets(fragment, insets)) { onApplySystemWindowInsets(insets) diff --git a/twidere/src/main/res/layout-sw600dp/activity_link_handler.xml b/twidere/src/main/res/layout-sw600dp/activity_link_handler.xml index 561944f2c..1ff4a99e8 100644 --- a/twidere/src/main/res/layout-sw600dp/activity_link_handler.xml +++ b/twidere/src/main/res/layout-sw600dp/activity_link_handler.xml @@ -6,7 +6,8 @@ android:id="@+id/contentView" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + app:setPadding="false"> + android:orientation="vertical" + app:setPadding="false"> . --> - @@ -61,4 +62,4 @@ android:layout_below="@+id/toolbarContainer" android:background="?android:windowContentOverlay"/> - \ No newline at end of file + \ No newline at end of file