TachiyomiCoordinatorLayout: Remove app bar lift mechanism for view pager (#6379)
This is a follow up to 845e061382
...jk i actually forgot about it
This commit is contained in:
parent
8aa402526a
commit
728e14e8e4
@ -12,14 +12,12 @@ import androidx.core.view.doOnLayout
|
|||||||
import androidx.customview.view.AbsSavedState
|
import androidx.customview.view.AbsSavedState
|
||||||
import androidx.lifecycle.coroutineScope
|
import androidx.lifecycle.coroutineScope
|
||||||
import androidx.lifecycle.findViewTreeLifecycleOwner
|
import androidx.lifecycle.findViewTreeLifecycleOwner
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.bluelinelabs.conductor.ChangeHandlerFrameLayout
|
import com.bluelinelabs.conductor.ChangeHandlerFrameLayout
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import eu.kanade.tachiyomi.util.system.isTablet
|
import eu.kanade.tachiyomi.util.system.isTablet
|
||||||
import eu.kanade.tachiyomi.util.view.findChild
|
import eu.kanade.tachiyomi.util.view.findChild
|
||||||
import eu.kanade.tachiyomi.util.view.findDescendant
|
import eu.kanade.tachiyomi.util.view.findDescendant
|
||||||
import eu.kanade.tachiyomi.util.view.getActivePageView
|
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import reactivecircus.flowbinding.android.view.HierarchyChangeEvent
|
import reactivecircus.flowbinding.android.view.HierarchyChangeEvent
|
||||||
@ -32,10 +30,6 @@ import reactivecircus.flowbinding.android.view.hierarchyChangeEvents
|
|||||||
* 1. When nested scroll detected, lift state will be decided from the nested
|
* 1. When nested scroll detected, lift state will be decided from the nested
|
||||||
* scroll target. (See [onNestedScroll])
|
* scroll target. (See [onNestedScroll])
|
||||||
*
|
*
|
||||||
* 2. When a descendant ViewPager active page is changed and the page contains RecyclerView,
|
|
||||||
* lift state will be decided from the said RecyclerView. (See [pageChangeListener])
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* With those conditions, this view expects the following direct child:
|
* With those conditions, this view expects the following direct child:
|
||||||
*
|
*
|
||||||
* 1. An [AppBarLayout].
|
* 1. An [AppBarLayout].
|
||||||
@ -55,22 +49,6 @@ class TachiyomiCoordinatorLayout @JvmOverloads constructor(
|
|||||||
|
|
||||||
private var appBarLayout: AppBarLayout? = null
|
private var appBarLayout: AppBarLayout? = null
|
||||||
private var viewPager: ViewPager? = null
|
private var viewPager: ViewPager? = null
|
||||||
set(value) {
|
|
||||||
field?.removeOnPageChangeListener(pageChangeListener)
|
|
||||||
field = value
|
|
||||||
field?.addOnPageChangeListener(pageChangeListener)
|
|
||||||
}
|
|
||||||
|
|
||||||
private val pageChangeListener = object : ViewPager.SimpleOnPageChangeListener() {
|
|
||||||
override fun onPageScrollStateChanged(state: Int) {
|
|
||||||
// Wait until idle to make sure all the views laid out properly before checked
|
|
||||||
if (canLiftAppBarOnScroll && state == ViewPager.SCROLL_STATE_IDLE) {
|
|
||||||
appBarLayout?.isLifted = (viewPager?.getActivePageView() as? ViewGroup)
|
|
||||||
?.findDescendant<RecyclerView>()
|
|
||||||
?.canScrollVertically(-1) ?: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If true, [AppBarLayout] child will be lifted on nested scroll.
|
* If true, [AppBarLayout] child will be lifted on nested scroll.
|
||||||
|
Loading…
Reference in New Issue
Block a user