improved users lists navbar style

This commit is contained in:
Mariotaku Lee 2017-06-26 22:23:41 +08:00
parent 9058d19437
commit 977550c7b0
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
7 changed files with 46 additions and 18 deletions

View File

@ -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()
}

View File

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

View File

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

View File

@ -39,18 +39,22 @@ interface IBaseFragment<out F : Fragment> {
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)

View File

@ -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">
<FrameLayout
android:id="@+id/contentFragment"

View File

@ -5,7 +5,8 @@
android:id="@+id/contentView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:orientation="vertical"
app:setPadding="false">
<FrameLayout
android:id="@+id/contentFragment"

View File

@ -17,10 +17,11 @@
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<RelativeLayout
<org.mariotaku.twidere.view.TintedStatusRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tabPagesFragmentView"
android:layout_width="match_parent"
android:layout_height="match_parent">
@ -61,4 +62,4 @@
android:layout_below="@+id/toolbarContainer"
android:background="?android:windowContentOverlay"/>
</RelativeLayout>
</org.mariotaku.twidere.view.TintedStatusRelativeLayout>