В Kotlin вы можете использовать
я есть NestedScrollView, который используется с CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout с эффектом параллакса, похожим наэтот урок
Мне нужно прокручивать содержимое программно (желательно плавную прокрутку, то есть анимированную), однако вызовы методов прокрутки (scrollBy (), scrollTo (), smoothScrollTo (), smoothScrollBy ()) ничего не делают.
Обратите внимание, что я используюapp:layout_behavior="@string/appbar_scrolling_view_behavior"
<- Не уверен, если проблема связана с этим.
я звонюnsv_form.smoothScrollBy(0, 300)
в Kotlin, когда пользователь нажимает кнопку, но ничего не происходит :(
(Тоже пробовал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: Как прокрутитьнравится программно?