如果有設定過BottomSheet的朋友們應該都知道,要定義BottomSheet 摺疊後的可視高度就要定義behavior_peekHeight這個屬性。
可惜的是,如果是設定一個數字給behavior_peekHeight就等於是將BottomSheet的高度寫死了。
那好,我透過設定把view的高度傳給behavior_peekHeight就可以達到我想要的效果了吧?
很可惜,若是直接去取得view.height永遠得會得到0這個數值。
因為Android禁止外部非自定義類別去使用物件的getHeight跟getWidth方法。
還好,Android有提供View.measure方法可以讓我們自行測量物件的高度跟寬度。
如果我們要取得layout內的物件寬度及高度,可以直接使用
var myConstrainLayout=findViewById(R.id.myConstrainLayout)
myConstrainLayout.measure(0,0)
var mHeight=myConstrainLayout.measuredHeight
bottomBehavior.peekHeight=mHeight
有了這個方法我們就可以來動態設定BottomSheet的behavior_peekHeight來調整摺疊後可視高度。