2017-02-08 86 views
1

我目前正在處理動畫,如果用戶單擊該動畫,它將長大視圖。基本上,它的卡片,點擊後,它會顯示底部的內容。對於這一點,我在擴展動畫這樣的:Android獲得的包裝內容視圖的高度膨脹爲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 
      } 
     } 

的問題是,我需要獲得一個視圖(WRAP_CONTENT)的高度以XML爲0dp定義。基本上,我想成長一個從0dp到wrap_content的視圖,爲此我需要知道什麼是wrap_content大小。

如何以最有效的方式實現該目標,而不用硬編碼視圖大小?

+0

試圖獲得在運行時的大小。 https://developer.android.com/reference/android/view/ViewTreeObserver.html –

+0

該視圖最初被誇大爲0dp,所以它不會只用這個解決方案,我認爲 –

+0

一旦佈局視圖,調用'視圖上的getWidth'將返回實際的寬度。所以不要在'onCreateView'中調用它。您可以按照建議使用ViewTreeObserver,以確保視圖已經佈置完畢。 –

回答

2

爲了衡量不同的佈局PARAMS視圖,並得到其高度,我們可以做到以下幾點:使用ViewTreeObserver

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