扩展/折叠卡高度问题

时间:2019-05-23 14:46:15

标签: android animation kotlin android-cardview

我在RecyclerView中有很多卡,并且正在为每个CardView进行展开/折叠动画。我的expand方法无法正确扩展。 要测量我的卡,我使用: view.measure(View.MeasureSpec.makeMeasureSpec(view.width,View.MeasureSpec.AT_MOST),                         View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED)) 第一次扩展卡时,由于我使用的是View.MeasureSpec.UNSPECIFIED,所以卡的高度非常大(大约9700)。 第一次出现这种奇怪的行为。当我再次扩展卡时,由于第一次扩展,现在我的高度已经知道,并且卡具有正确的高度。 我需要在第一次扩展之前获得正确的卡高度 我看到了一些类似的帖子: Android:在绘制视图之前先获取其高度 如何根据String的大小自动调整TextView的高度? 如何根据设备的宽度和字体大小测量TextView的高度? 没有成功如何获得身高? 在我的代码下面: fun expand(view:View,duration:Long){             view.visibility = View.VISIBLE             view.measure(View.MeasureSpec.makeMeasureSpec(view.width,View.MeasureSpec.AT_MOST),                     View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED))             val targetHeight:Int = view.measuredHeight             view.layoutParams.height = 0             val valueAnimator:ValueAnimator = ValueAnimator.ofInt(targetHeight)             valueAnimator.addUpdateListener {动画->                 view.layoutParams.height = animation.animatedValue作为Int                 view.requestLayout()             }             valueAnimator.interpolator = LinearInterpolator()             valueAnimator.duration =持续时间             valueAnimator.start()         }

0 个答案:

没有答案