【问题标题】:Android get height of a wrap content view inflated as 0dpAndroid获取包装内容视图的高度膨胀为0dp
【发布时间】: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


【解决方案1】:

为了测量具有不同布局参数的视图并获取其高度,我们可以执行以下操作:

contentContainer.measure(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
val contentContainerFinalHeight = contentContainer.measuredHeight

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多