improved tablet ui

This commit is contained in:
Mariotaku Lee 2017-01-18 15:35:00 +08:00
parent 5514c43094
commit 87f2e604f4
5 changed files with 20 additions and 9 deletions

View File

@ -172,7 +172,7 @@ dependencies {
compile "com.github.mariotaku.CommonsLibrary:text:$mariotaku_commons_library_version"
compile "com.github.mariotaku.CommonsLibrary:text-kotlin:$mariotaku_commons_library_version"
compile 'com.github.mariotaku:KPreferences:0.9.5'
compile 'com.github.mariotaku:Chameleon:0.9.10'
compile 'com.github.mariotaku:Chameleon:0.9.11'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'nl.komponents.kovenant:kovenant:3.3.0'
compile 'nl.komponents.kovenant:kovenant-android:3.3.0'

View File

@ -37,6 +37,7 @@ import android.support.v4.content.ContextCompat;
import android.support.v7.app.TwilightManagerAccessor;
import android.support.v7.view.menu.ActionMenuItemView;
import android.support.v7.widget.ActionMenuView;
import android.support.v7.widget.TintTypedArray;
import android.support.v7.widget.Toolbar;
import android.support.v7.widget.TwidereToolbar;
import android.util.TypedValue;
@ -174,7 +175,7 @@ public class ThemeUtils implements Constants {
public static Drawable getDrawableFromThemeAttribute(final Context context, int attr) {
final TypedArray a = context.obtainStyledAttributes(new int[]{attr});
final TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, null, new int[]{attr});
try {
return a.getDrawable(0);
} finally {

View File

@ -798,11 +798,11 @@ class HomeActivity : BaseActivity(), OnClickListener, OnPageChangeListener, Supp
if (resources.getBoolean(R.bool.home_tab_has_multiple_columns)) {
mainPager.pageMargin = resources.getDimensionPixelOffset(R.dimen.home_page_margin)
mainPager.setPageMarginDrawable(ThemeUtils.getDrawableFromThemeAttribute(this, R.attr.dividerVertical))
pagerAdapter.pageWidth = resources.getDimension(R.dimen.preferred_tab_column_width) / resources.displayMetrics.widthPixels
pagerAdapter.hasMultipleColumns = true
} else {
mainPager.pageMargin = 0
mainPager.setPageMarginDrawable(null)
pagerAdapter.pageWidth = 1f
pagerAdapter.hasMultipleColumns = false
}
}

View File

@ -27,6 +27,7 @@ import android.support.v4.app.FragmentManager
import android.support.v4.view.PagerAdapter
import android.view.View
import android.view.ViewGroup
import org.mariotaku.twidere.R
import org.mariotaku.twidere.fragment.iface.RefreshScrollTopInterface
import org.mariotaku.twidere.fragment.iface.SupportFragmentCallback
import org.mariotaku.twidere.model.SupportTabSpec
@ -44,6 +45,8 @@ class SupportTabsAdapter @JvmOverloads constructor(
private val indicator: PagerIndicator? = null
) : SupportFixedFragmentStatePagerAdapter(fm), TabProvider, TabListener {
var hasMultipleColumns: Boolean = false
private val tab = ArrayList<SupportTabSpec>()
init {
@ -91,7 +94,11 @@ class SupportTabsAdapter @JvmOverloads constructor(
}
override fun getPageWidth(position: Int): Float {
return pageWidth
if (hasMultipleColumns) {
val resources = context.resources
return resources.getDimension(R.dimen.preferred_tab_column_width) / resources.displayMetrics.widthPixels
}
return 1f
}
override fun getItem(position: Int): Fragment {
@ -152,6 +159,4 @@ class SupportTabsAdapter @JvmOverloads constructor(
private val EXTRA_ADAPTER_POSITION = "adapter_position"
}
var pageWidth: Float = 1f
}

View File

@ -21,6 +21,7 @@ package org.mariotaku.twidere.fragment
import android.content.Context
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
import android.view.*
@ -45,11 +46,14 @@ abstract class AbsContentListViewFragment<A : ListAdapter> : BaseFragment(),
OnRefreshListener, RefreshScrollTopInterface, ControlBarOffsetListener, ContentListSupport,
AbsListView.OnScrollListener {
private lateinit var scrollHandler: ListViewScrollHandler
// Data fields
private val systemWindowsInsets = Rect()
protected open val overrideDivider: Drawable?
get() = ThemeUtils.getDrawableFromThemeAttribute(context, android.R.attr.listDivider)
override lateinit var adapter: A
// Data fields
private val systemWindowsInsets = Rect()
override fun onControlBarOffsetChanged(activity: IControlBarActivity, offset: Float) {
updateRefreshProgressOffset()
@ -127,6 +131,7 @@ abstract class AbsContentListViewFragment<A : ListAdapter> : BaseFragment(),
}
listView.adapter = adapter
listView.clipToPadding = false
overrideDivider?.let { listView.divider = it }
scrollHandler = ListViewScrollHandler(this, ListViewScrollHandler.ListViewCallback(listView)).apply {
this.touchSlop = ViewConfiguration.get(context).scaledTouchSlop
this.onScrollListener = this@AbsContentListViewFragment