iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0

如果有設定過BottomSheet的朋友們應該都知道,要定義BottomSheet 摺疊後的可視高度就要定義behavior_peekHeight這個屬性。

可惜的是,如果是設定一個數字給behavior_peekHeight就等於是將BottomSheet的高度寫死了。

那好,我透過設定把view的高度傳給behavior_peekHeight就可以達到我想要的效果了吧?

很可惜,若是直接去取得view.height永遠得會得到0這個數值。

因為Android禁止外部非自定義類別去使用物件的getHeight跟getWidth方法。

View.measure


還好,Android有提供View.measure方法可以讓我們自行測量物件的高度跟寬度。

如果我們要取得layout內的物件寬度及高度,可以直接使用

  • View.getLayoutParams().width
  • View.getLayoutParams().height
var myConstrainLayout=findViewById(R.id.myConstrainLayout)
myConstrainLayout.measure(0,0)
var mHeight=myConstrainLayout.measuredHeight

bottomBehavior.peekHeight=mHeight

有了這個方法我們就可以來動態設定BottomSheet的behavior_peekHeight來調整摺疊後可視高度。


上一篇
Android X kotlin 超簡單BottomSheet
下一篇
Android中取代Enum的用法@IntDef 及完賽感想
系列文
跟Kotlin一起來聊Android元件 或許還有應用,或許還有一些資訊雜談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言