MotionLayout和NestedScrollView RecylerView滚动问题

问题描述

我在将recyclerview滚动到水平方向时遇到意外动画动画的问题。回收者视图在NestedScrollView内部,而NestedScrollView在MotionLayout内部。我花了几天时间才找到原因,但没有成功,请帮助

https://youtu.be/NkYs9BtJjNo

<?xml version="1.0" encoding="utf-8"?>
<layout 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">
   <data>
       <variable
           name="viewModel"
           type="com.aaa.viewModel.preview.PreviewVM" />
   </data>
   <androidx.constraintlayout.motion.widget.MotionLayout
       android:id="@+id/motionLayout"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="@color/gray_3"
       android:clickable="true"
       android:focusable="true"
       app:layoutDescription="@xml/motion_scene"
       app:showPaths="false">
       <ImageView
           android:id="@+id/imageContainer"
           android:layout_width="@dimen/_85sdp"
           android:layout_height="@dimen/_85sdp"
           android:layout_gravity="center"
           android:layout_marginStart="@dimen/_8sdp"
           android:layout_marginTop="@dimen/_4sdp"
           android:contentDescription="@string/todo"
           android:scaleType="centerCrop"
           app:layout_constraintStart_toStartOf="parent"
           app:layout_constraintTop_toTopOf="parent"
           app:src="@{viewModel.itemAlbum.avatarUrl}" />
       <RelativeLayout
           android:id="@+id/container"
           android:layout_width="0dp"
           android:layout_height="@dimen/_100sdp"
           android:layout_marginStart="@dimen/_8sdp"
           android:layout_marginEnd="@dimen/_8sdp"
           app:layout_constraintBottom_toTopOf="@+id/space"
           app:layout_constraintEnd_toEndOf="parent"
           app:layout_constraintStart_toEndOf="@+id/imageContainer">
           <TextView
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:layout_marginTop="@dimen/_12sdp"
               android:ellipsize="marquee"
               android:fontFamily="@font/gotham_book"
               android:marqueeRepeatLimit="marquee_forever"
               android:scrollHorizontally="true"
               android:singleLine="true"
               android:text="Title"
               android:textColor="@color/FC_BACKGROUND_COLOR"
               android:textSize="@dimen/_13sdp"
               tools:text="Cantigo" />
           <Button
               android:layout_width="match_parent"
               android:layout_height="@dimen/_30sdp"
               android:layout_alignParentBottom="true"
               android:background="@drawable/rounded_black_5_sdp"
               android:backgroundTint="@color/FC_SECONDARY_COLOR"
               android:fontFamily="@font/gotham_bold"
               android:gravity="center"
               android:text="Button"
               android:textColor="@color/black"
               android:textSize="@dimen/_12sdp" />
       </RelativeLayout>
       <androidx.core.widget.NestedScrollView
           android:id="@+id/nestedScrollView"
           android:layout_width="0dp"
           android:layout_height="0dp"
           android:layout_marginTop="@dimen/_4sdp"
           app:layout_constraintBottom_toBottomOf="parent"
           app:layout_constraintEnd_toEndOf="parent"
           app:layout_constraintStart_toStartOf="parent"
           app:layout_constraintTop_toBottomOf="@+id/imageContainer">
           <androidx.appcompat.widget.LinearLayoutCompat
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:animateLayoutChanges="true"
               android:orientation="vertical">
               <View
                   android:id="@+id/adView"
                   android:layout_width="300dp"
                   android:layout_height="250dp"
                   android:layout_gravity="center"
                   android:layout_marginTop="@dimen/_18sdp"
                   android:layout_marginBottom="@dimen/_14sdp"
                   android:background="@color/coin_tutorial_bg" />
               <androidx.recyclerview.widget.RecyclerView
                   android:id="@+id/rvArtistAlbum"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:layout_below="@+id/tvAlbum"
                   android:layout_marginTop="@dimen/_5sdp"
                   android:background="@color/app_background"
                   android:nestedScrollingEnabled="false"
                   android:orientation="horizontal"
                   app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
               <androidx.recyclerview.widget.RecyclerView
                   android:id="@+id/rvArtist"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:layout_below="@+id/tvAlbum"
                   android:layout_marginTop="@dimen/_25sdp"
                   android:background="@color/app_background"
                   android:nestedScrollingEnabled="false"
                   android:orientation="horizontal"
                   app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
           </androidx.appcompat.widget.LinearLayoutCompat>
       </androidx.core.widget.NestedScrollView>
       <Space
           android:id="@+id/space"
           android:layout_width="0dp"
           android:layout_height="@dimen/_8sdp"
           app:layout_constraintEnd_toEndOf="@+id/imageContainer"
           app:layout_constraintStart_toEndOf="@+id/imageContainer"
           app:layout_constraintStart_toStartOf="@+id/imageContainer"
           app:layout_constraintTop_toBottomOf="@id/imageContainer" />
   </androidx.constraintlayout.motion.widget.MotionLayout>
</layout>

解决方法

我认为您不希望滑动和nestedScrollView(RecyclerView)进行交互 在您添加

motion:nestedScrollFlags =“ disableScroll”

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...