Android RecyclerView在MotionLayout中的其他视图上跳转
我在Github有一个项目: 我在其中使用MotionLayout: 有时,id为actors的RecyclerViewwith会跳到NestedScrollView中的其他视图上 您可以在不使用RecyclerView的情况下查看正确的行为: 当NestedScrollView中的其他视图高度较短时会发生这种情况。 你知道为什么会这样吗 我试过:Android RecyclerView在MotionLayout中的其他视图上跳转,android,android-recyclerview,android-motionlayout,Android,Android Recyclerview,Android Motionlayout,我在Github有一个项目: 我在其中使用MotionLayout: 有时,id为actors的RecyclerViewwith会跳到NestedScrollView中的其他视图上 您可以在不使用RecyclerView的情况下查看正确的行为: 当NestedScrollView中的其他视图高度较短时会发生这种情况。 你知道为什么会这样吗 我试过: <android.support.v4.widget.NestedScrollView android:id="
<android.support.v4.widget.NestedScrollView
android:id="@+id/details_rv"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/window_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
...
</android.support.v4.widget.NestedScrollView>
<android.support.v7.widget.RecyclerView
android:id="@+id/details_cast"
android:layout_width="0dp"
android:layout_height="0dp"
app:items="@{vm.cast}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/details_rv" />
但它并没有在RecyclerView中显示演员阵容
这是场景展示的细节:
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Transition
app:constraintSetEnd="@id/end"
app:constraintSetStart="@id/start"
app:duration="200">
<OnSwipe
app:dragDirection="dragUp"
app:moveWhenScrollAtTop="true"
app:touchAnchorId="@id/details_rv"
app:touchAnchorSide="top" />
<KeyFrameSet>
<KeyPosition
app:framePosition="20"
app:keyPositionType="deltaRelative"
app:percentY="0.51"
app:target="@id/details_poster" />
<!-- This looks weird. We need a quick change from elevated to not-so-elevated at 20% so we set 2 key
attributes, one at 20% and other at 25%. -->
<KeyAttribute
android:elevation="@dimen/z_app_bar"
android:rotation="45"
android:rotationY="15"
app:framePosition="20"
app:target="@id/details_poster" />
<KeyAttribute
android:elevation="@dimen/details_poster_not_elevation"
app:framePosition="25"
app:target="@id/details_poster" />
<!-- Only elevate the appbar background over the last 25% -->
<KeyAttribute
android:elevation="0dp"
app:framePosition="75"
app:target="@id/details_appbar_background" />
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@id/details_backdrop"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@id/details_backdrop_scrim"
app:layout_constraintBottom_toBottomOf="@id/details_backdrop"
app:layout_constraintEnd_toEndOf="@id/details_backdrop"
app:layout_constraintStart_toStartOf="@id/details_backdrop"
app:layout_constraintTop_toTopOf="@id/details_backdrop">
<CustomAttribute
app:attributeName="background"
app:customColorDrawableValue="@android:color/transparent" />
</Constraint>
<Constraint
android:id="@id/details_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="0dp"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor">
<CustomAttribute
app:attributeName="iconTint"
app:customColorValue="?android:attr/textColorPrimaryInverse" />
</Constraint>
<Constraint
android:id="@id/details_appbar_background"
android:layout_width="0dp"
android:layout_height="88dp"
app:layout_constraintBottom_toBottomOf="@id/details_poster"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Constraint
android:id="@id/details_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toTopOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="@id/details_appbar_background"
app:layout_constraintStart_toEndOf="@id/details_poster"
app:layout_constraintTop_toBottomOf="@id/details_appbar_background" />
<Constraint
android:id="@id/details_poster"
android:layout_width="80dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/padding_normal"
android:layout_marginTop="200dp"
android:elevation="@dimen/z_app_bar"
app:layout_constraintDimensionRatio="h,1:1.5"
app:layout_constraintStart_toStartOf="@id/details_rv"
app:layout_constraintTop_toTopOf="parent" />
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@id/details_backdrop"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@id/details_backdrop_scrim"
app:layout_constraintBottom_toBottomOf="@id/details_backdrop"
app:layout_constraintEnd_toEndOf="@id/details_backdrop"
app:layout_constraintStart_toStartOf="@id/details_backdrop"
app:layout_constraintTop_toTopOf="@id/details_backdrop">
<CustomAttribute
app:attributeName="background"
app:customColorDrawableValue="@color/status_bar_scrim_translucent_dark" />
</Constraint>
<Constraint
android:id="@id/details_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/z_app_bar"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor">
<CustomAttribute
app:attributeName="iconTint"
app:customColorValue="?android:attr/textColorPrimary" />
</Constraint>
<Constraint
android:id="@id/details_appbar_background"
android:layout_width="0dp"
android:layout_height="?android:attr/actionBarSize"
android:elevation="@dimen/z_app_bar"
app:layout_constraintEnd_toEndOf="@id/details_rv"
app:layout_constraintStart_toStartOf="@id/details_rv"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor" />
<Constraint
android:id="@id/details_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="48dp"
android:layout_marginStart="64dp"
android:elevation="@dimen/z_app_bar"
app:layout_constraintBottom_toBottomOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="@id/details_appbar_background"
app:layout_constraintStart_toStartOf="@id/details_appbar_background"
app:layout_constraintTop_toTopOf="@id/details_appbar_background" />
<Constraint
android:id="@id/details_poster"
android:layout_width="72dp"
android:layout_height="0dp"
android:elevation="@dimen/details_poster_not_elevation"
app:layout_constraintDimensionRatio="h,1:1.5"
app:layout_constraintStart_toStartOf="@id/details_title"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor" />
</ConstraintSet>
</MotionScene>
问题跟踪可在以下位置找到:请停止删除并重新发布您的问题。你的帖子不应该比这里的任何人都更重要。如果您在给定的时间范围内绝对需要解决方案,那么我建议您雇佣一名开发人员。
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Transition
app:constraintSetEnd="@id/end"
app:constraintSetStart="@id/start"
app:duration="200">
<OnSwipe
app:dragDirection="dragUp"
app:moveWhenScrollAtTop="true"
app:touchAnchorId="@id/details_rv"
app:touchAnchorSide="top" />
<KeyFrameSet>
<KeyPosition
app:framePosition="20"
app:keyPositionType="deltaRelative"
app:percentY="0.51"
app:target="@id/details_poster" />
<!-- This looks weird. We need a quick change from elevated to not-so-elevated at 20% so we set 2 key
attributes, one at 20% and other at 25%. -->
<KeyAttribute
android:elevation="@dimen/z_app_bar"
android:rotation="45"
android:rotationY="15"
app:framePosition="20"
app:target="@id/details_poster" />
<KeyAttribute
android:elevation="@dimen/details_poster_not_elevation"
app:framePosition="25"
app:target="@id/details_poster" />
<!-- Only elevate the appbar background over the last 25% -->
<KeyAttribute
android:elevation="0dp"
app:framePosition="75"
app:target="@id/details_appbar_background" />
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@id/details_backdrop"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@id/details_backdrop_scrim"
app:layout_constraintBottom_toBottomOf="@id/details_backdrop"
app:layout_constraintEnd_toEndOf="@id/details_backdrop"
app:layout_constraintStart_toStartOf="@id/details_backdrop"
app:layout_constraintTop_toTopOf="@id/details_backdrop">
<CustomAttribute
app:attributeName="background"
app:customColorDrawableValue="@android:color/transparent" />
</Constraint>
<Constraint
android:id="@id/details_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="0dp"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor">
<CustomAttribute
app:attributeName="iconTint"
app:customColorValue="?android:attr/textColorPrimaryInverse" />
</Constraint>
<Constraint
android:id="@id/details_appbar_background"
android:layout_width="0dp"
android:layout_height="88dp"
app:layout_constraintBottom_toBottomOf="@id/details_poster"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Constraint
android:id="@id/details_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
app:layout_constraintBottom_toTopOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="@id/details_appbar_background"
app:layout_constraintStart_toEndOf="@id/details_poster"
app:layout_constraintTop_toBottomOf="@id/details_appbar_background" />
<Constraint
android:id="@id/details_poster"
android:layout_width="80dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/padding_normal"
android:layout_marginTop="200dp"
android:elevation="@dimen/z_app_bar"
app:layout_constraintDimensionRatio="h,1:1.5"
app:layout_constraintStart_toStartOf="@id/details_rv"
app:layout_constraintTop_toTopOf="parent" />
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@id/details_backdrop"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@id/details_backdrop_scrim"
app:layout_constraintBottom_toBottomOf="@id/details_backdrop"
app:layout_constraintEnd_toEndOf="@id/details_backdrop"
app:layout_constraintStart_toStartOf="@id/details_backdrop"
app:layout_constraintTop_toTopOf="@id/details_backdrop">
<CustomAttribute
app:attributeName="background"
app:customColorDrawableValue="@color/status_bar_scrim_translucent_dark" />
</Constraint>
<Constraint
android:id="@id/details_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/z_app_bar"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor">
<CustomAttribute
app:attributeName="iconTint"
app:customColorValue="?android:attr/textColorPrimary" />
</Constraint>
<Constraint
android:id="@id/details_appbar_background"
android:layout_width="0dp"
android:layout_height="?android:attr/actionBarSize"
android:elevation="@dimen/z_app_bar"
app:layout_constraintEnd_toEndOf="@id/details_rv"
app:layout_constraintStart_toStartOf="@id/details_rv"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor" />
<Constraint
android:id="@id/details_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="48dp"
android:layout_marginStart="64dp"
android:elevation="@dimen/z_app_bar"
app:layout_constraintBottom_toBottomOf="@id/details_appbar_background"
app:layout_constraintEnd_toEndOf="@id/details_appbar_background"
app:layout_constraintStart_toStartOf="@id/details_appbar_background"
app:layout_constraintTop_toTopOf="@id/details_appbar_background" />
<Constraint
android:id="@id/details_poster"
android:layout_width="72dp"
android:layout_height="0dp"
android:elevation="@dimen/details_poster_not_elevation"
app:layout_constraintDimensionRatio="h,1:1.5"
app:layout_constraintStart_toStartOf="@id/details_title"
app:layout_constraintTop_toBottomOf="@id/details_status_bar_anchor" />
</ConstraintSet>
</MotionScene>