У меня есть NestedScrollView, который используется с CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout с эффектом параллакса, похожим на этот урок
Мне нужно прокручивать контент программно (желательно плавная прокрутка, то есть анимация)Однако вызов методов прокрутки (scrollBy (), scrollTo (), smoothScrollTo (), smoothScrollBy ()) ничего не делает.
Обратите внимание, что я использую app:layout_behavior="@string/appbar_scrolling_view_behavior"
<- не уверен, что проблема связана</p>
Я звоню nsv_form.smoothScrollBy(0, 300)
в Котлине, когда пользователь нажимает кнопку, но ничего не происходит: (
(Также пробовал scrollTo()
, scrollBy()
, +- 300, всевозможные варианты)
ОБНОВЛЕНИЕ: я копался в исходном коде, и похоже, что методы *scroll*()
ожидают, что содержимое макета будет больше, чем родительское представление (имеет смысл).в моем случае содержимое меньше, поэтому я подозреваю, что методы прокрутки не работают. Возможно, мне нужно что-то другое вместо scroll
?
Позиция NestedScrollViewначинается частично за пределами экрана с изображением над ним в CollapsingToolbarLayout, , например, , поэтому мне кажется, что мне нужно программно переместить позицию NestedScrollView и вызвать поведение прокрутки CoordinatorLayout.- Как мне это сделать?
Вот мой макет:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/iv_image"
android:layout_width="match_parent"
android:layout_height="@dimen/image_height"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
tools:src="@drawable/some_image" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/nsv_form"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:orientation="vertical">
[... child views...]
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
TLDR : Как мне прокрутить как этот программно?