【发布时间】:2017-06-26 11:21:57
【问题描述】:
我目前正在制作动画,如果用户点击它,它会扩大视图。基本上,它是一张卡片,点击后会显示底部内容。为此,我正在像这样扩展动画:
Val collapseAnimation = object : Animation() {
override fun applyTransformation(interpolatedTime: Float, t: Transformation?) {
val interpolatedInverted = 1 - interpolatedTime
val headerLp = headerImage.layoutParams
headerLp.width = ...
headerImage.layoutParams = headerLp
}
}
问题是我需要获取在 XML 中定义为 0dp 的视图 (wrap_content) 的高度。基本上,我想将视图从 0dp 扩展到 wrap_content,为此我需要知道 wrap_content 的大小。
如何以最有效的方式实现这一点,而无需对视图大小进行硬编码?
【问题讨论】:
-
尝试使用 ViewTreeObserver 在运行时获取大小。 developer.android.com/reference/android/view/…
-
视图最初被膨胀为 0dp,所以我认为它不适用于仅此解决方案
-
布局视图后,在视图上调用
getWidth将返回实际宽度。所以不要在onCreateView中调用它。您可以按照建议使用ViewTreeObserver来确保视图已布局。 -
如果视图是在 xml 中定义的高度为 0dp,viewtree observable 如何返回实际高度?视图被定义为高度为 0dp,我想用 wrap_content 知道它的大小而不实际设置它
标签: android animation android-animation layoutparams