gpt4 book ai didi

android - 折叠 CardView 动画无法正常工作

转载 作者:IT老高 更新时间:2023-10-28 13:33:28 26 4
gpt4 key购买 nike

我想要做什么

我有一个 RecyclerView 有很多项目,基本上是一些 CardView

这些卡片在它们的主体中间有一个支持文本,默认情况下它的可见性设置为 GONE,当我点击箭头时它变成 VISIBLE卡片的右侧。

我正在尝试在文本显示和折叠时为卡片设置动画。

下图显示了展开的卡片和折叠的卡片:

cards

CardView 布局(为了便于阅读,我删除了一些部分):

<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="3dp"
card_view:cardElevation="4dp"
card_view:cardUseCompatPadding="true"
android:id="@+id/root">

<LinearLayout
android:id="@+id/item_ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/activity_vertical_margin">

<!-- The header with the title and the item -->


<TextView
android:id="@+id/body_content"
style="@style/TextAppearance.AppCompat.Medium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp"
android:layout_marginBottom="8dp"
android:text="@string/about_page_description"
android:textColor="@color/secondaryText"
android:visibility="gone"/>

<!-- The divider, and the footer with the timestamp -->

</LinearLayout>
</android.support.v7.widget.CardView>

问题

当卡片展开并显示主体 TextView 时,动画正在工作,但是,当我尝试将其折叠回来时,动画下方的卡片与第一个卡片重叠。

示例:

card animation

到目前为止我已经尝试过什么

我已经问过 similar question about this behavior here之前,但该解决方案不适用于卡片中间的 TextView

负责动画部分的代码位于 RecyclerView 适配器中。箭头有一个点击监听器,它调用下面的方法:

private fun toggleVisibility() {
if (bodyContent.visibility == View.GONE || bodyContent.visibility == View.INVISIBLE) {
btSeeMore.animate().rotation(180f).start()
TransitionManager.beginDelayedTransition(root, AutoTransition())
bodyContent.visibility = View.VISIBLE
}
else {
btSeeMore.animate().rotation(0f).start()

TransitionManager.beginDelayedTransition(root, AutoTransition())
bodyContent.visibility = View.GONE
}
}

root 是我的 CardView

我也尝试使用 LinearLayout 而不是卡片本身来进行延迟转换,但这也不起作用。

如何为我的布局实现这种行为?

最佳答案

您必须在 RecyclerView 上执行转换,而不是在单个项目上。否则,自动转换不会考虑 RecyclerView 布局更改,因为它只会查看该 subview 中的哪些更改,即使实际上其他 ViewHolder 会受到间接影响(布局参数正在更改)。

因此,不要将“根”(项目 View )传递给 TransitionManager#beginDelayedTransition,而是传递对 RecyclerView 的引用

关于android - 折叠 CardView 动画无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49054975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com