Отслеживать изменения видимости ChipGroup на экране
Стоит задача отслеживать изменения видимости ChipGroup на экране телефона. То есть когда скролишь вниз и на экране не видно ChipGroup получать событие об этом и наоборот когда стало видно.
Я смотрел в сторону viewTreeObserver ну ничего не вышло. Может кто-то знает в какую сторону смотреть?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/default_margin"
android:layout_marginEnd="@dimen/default_margin"
android:orientation="vertical">
<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:singleSelection="true">
</com.google.android.material.chip.ChipGroup>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/default_margin"
android:overScrollMode="never" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
EDIT
Нашел такое решение данной задачи, осталось исправить чтоб срабатывала когда виден не весь chipGroup
val scrollBounds = Rect()
nestedScrollView.getHitRect(scrollBounds);
nestedScrollView.setOnScrollChangeListener(NestedScrollView.OnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
if (chipGroup.getLocalVisibleRect(scrollBounds)) {
if (!chipGroup.getLocalVisibleRect(scrollBounds)
|| scrollBounds.height() < chipGroup.getHeight()
) {
chip.setVisibility(true)
} else {
chip.setVisibility(false)
}
}
});