private fun showOrhide( //收缩部分 linearLayout: LinearLayout, //旋转箭头 taskDetailArrow: RelativeLayout ) { val scrollView = binding.scrollView val rect = Rect() linearLayout.getGlobalVisibleRect(rect) val arrow = taskDetailArrow.getChildAt(1) if (linearLayout.visibility == View.VISIBLE) { arrow.rotation = 180f ObjectAnimator.ofFloat( linearLayout, "translationY", 0.0f, -linearLayout.measuredHeight.toFloat() ).apply { duration = 500 interpolator = AccelerateInterpolator() start() }.addListener(object : Animator.AnimatorListener { override fun onAnimationRepeat(animation: Animator?) { } override fun onAnimationEnd(animation: Animator?) { linearLayout.visibility = View.GONE scrollView.post { scrollView.smoothScrollTo(0, rect.bottom); } } override fun onAnimationCancel(animation: Animator?) { } override fun onAnimationStart(animation: Animator?) { } }) } else { arrow.rotation = 0f ObjectAnimator.ofFloat( linearLayout, "translationY", -linearLayout.measuredHeight.toFloat(), 0.0f ).apply { duration = 500 interpolator = AccelerateInterpolator() start() }.addListener(object : Animator.AnimatorListener { override fun onAnimationRepeat(animation: Animator?) { } override fun onAnimationEnd(animation: Animator?) { linearLayout.visibility = View.VISIBLE scrollView.post { scrollView.smoothScrollTo(0, rect.bottom); } } override fun onAnimationCancel(animation: Animator?) { } override fun onAnimationStart(animation: Animator?) { } }) }