父级保证金更改后,Android子级宽度错误

我有一个animation,我必须将cardView从水平边缘状态扩展到无边距状态。 国家如下:

  • 折叠状态:保证金开始和结束4 dp
  • 扩张状态:无保证金

要做到这一点,我做了以下(在Kotlin):

val anim = object : Animation() { override fun applyTransformation(interpolatedTime: Float, t: Transformation?) { val thisLp = layoutParams as MarginLayoutParams val newMargin = maxHorizontalMargin - (maxHorizontalMargin * interpolatedTime).toInt() thisLp.setMargins(newMargin, 0, newMargin, 0) this.layoutParams = thisLp }} 

一切都按预期工作,除非视图完全展开,则子项的全宽(定义为MATCH_PARENT)不是全角,而是在开始和结束时都有一个边距。 我的赌注是,作为最初的父视图状态有边距,并且只有在展开之后,边距消失了,绘制的儿童的最大宽度才会更新,因此会缩短预期。 如何克服这一点?