s métodos @NestedScrollView + CoodinatorLayout scrollBy () scrollTo () não fazem nada
Tenho um NestedScrollView sendo usado com CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout com efeito de paralaxe semelhante aeste tutorial
Preciso rolar o conteúdo de forma programática (de preferência uma rolagem suave, ou seja, animada), mas chamar os métodos de rolagem (scrollBy (), scrollTo (), smoothScrollTo (), smoothScrollBy ()) não faz nad
Note que estou usandoapp:layout_behavior="@string/appbar_scrolling_view_behavior"
<- Não tenho certeza se o problema está relacionado a iss
Estou ligandonsv_form.smoothScrollBy(0, 300)
no Kotlin quando um usuário clica em um botão, mas nada acontece:
(Também tenteiscrollTo()
, scrollBy()
, + - 300, todos os tipos de variações diferentes)
UPDATE: Eu procurei no código fonte e parece que o*scroll*()
s métodos @ esperam que o conteúdo do layout seja maior que a visualização principal (faz sentido). No meu caso, o conteúdo é menor, então suspeito que é por isso que os métodos de rolagem não funcionam. Talvez eu precise de algo diferente em vez descroll
?
posição do @ NestedScrollView começa parcialmente fora da tela com uma imagem acima dela em um CollapsingToolbarLayout,como iss, parece que preciso mover programaticamente a posição do NestedScrollView AND para acionar o comportamento de rolagem do CoordinatorLayout. -- Como eu faço isso
Aqui está o meu layout:
<?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: Como faço para rolarcomo iss programaticamente?