2017-02-08 8 views
1

저는 현재 사용자가 클릭하면보기가 커질 애니메이션에 대해 작업하고 있습니다. 기본적으로 클릭 한 카드는 맨 아래의 내용을 보여줍니다. 이를 위해,이 같은 애니메이션을 확장하고 있습니다 :안드로이드는 0dp로 부풀린 랩 콘텐츠보기의 높이를 얻습니다.

Val collapseAnimation = object : Animation() { 
      override fun applyTransformation(interpolatedTime: Float, t: Transformation?) { 
       val interpolatedInverted = 1 - interpolatedTime 

       val headerLp = headerImage.layoutParams 
       headerLp.width = ... 
       headerImage.layoutParams = headerLp 
      } 
     } 

문제는 내가 0dp로 XML로 정의되는 뷰 (wrap_content)의 높이를 얻을 필요가있다. 기본적으로, 나는 0dp에서 wrap_content까지 뷰를 성장시키고 싶다. 그래서 나는 wrap_content 크기가 무엇인지 알아야한다.

보기 크기를 하드 코딩하지 않고 어떻게 가장 효율적으로이를 수행 할 수 있습니까?

+0

시도가 런타임에 크기를 얻을 수있는 ViewTreeObserver를 사용하여. https://developer.android.com/reference/android/view/ViewTreeObserver.html –

+0

뷰는 처음에는 0dp로 확장되어 있으므로이 솔루션만으로는 작동하지 않습니다. –

+0

뷰가 배치되면 ' 뷰의 getWidth'는 실제 너비를 반환합니다. 따라서 onCreateView에서 이것을 호출하지 마십시오. 'ViewTreeObserver'를 사용하여 뷰가 배치되었는지 확인할 수 있습니다. –

답변

2

는 다른 레이아웃 PARAMS와보기를 측정하고 높이를 얻기 위해, 우리는 다음과 같은 작업을 수행 할 수

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