添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
痴情的帽子  ·  2018-11-26 ...·  1 年前    · 
强悍的鸵鸟  ·  dotnet dev-certs ...·  1 年前    · 

如果有設定過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來調整摺疊後可視高度。