У меня есть следующий макет:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<ui.home.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
app:layout_behavior =".ui.behavior.NavigationViewBehavior"
/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</android.support.design.widget.CoordinatorLayout>
ViewPager содержит несколько фрагментов и имеет NestedScrollViews.
Я хочу, чтобы высота NavigationView уменьшалась при прокрутке scrollView.
Я уже добавил пользовательское поведение:
package ui.behavior
import android.content.Context
import android.support.design.widget.CoordinatorLayout
import android.support.v4.widget.NestedScrollView
import android.util.AttributeSet
import android.util.Log
import android.view.View
class NavigationViewBehavior(
context: Context,
attributeSet: AttributeSet
) : CoordinatorLayout.Behavior<NavigationView>(context, attributeSet) {
override fun layoutDependsOn(
parent: CoordinatorLayout?,
child: NavigationView?,
dependency: View?
): Boolean {
Log.d("Behavior", "Dependency = ${dependency.toString()}")
return dependency is NestedScrollView
}
override fun onDependentViewChanged(
parent: CoordinatorLayout?,
child: NavigationView?,
dependency: View?
): Boolean {
if (child is NavigationView && dependency is NestedScrollView) {
// Adjust navigation view according to scroll Y value
}
return false
}
}
Но onDependentViewChanged никогда не запускается, потому что только ViewPager передается layoutDependsOn.
Как мне реагировать на события прокрутки вложенных просмотров прокрутки?