iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
0

前兩天談了 BottomSheet 能做什麼,今天來看一下 Android Doc 裡 BottomSheetBehavior 可以做到什麼事?


int STATE_COLLAPSED
The bottom sheet is collapsed.

int STATE_DRAGGING
The bottom sheet is dragging.

int STATE_EXPANDED
The bottom sheet is expanded.

int STATE_HIDDEN
The bottom sheet is hidden.


以上四項是比較常用到的屬性,分別表示收疊中、拖拉中、展開中、隱藏中,可以根據這四項來準確地抓到我們想要執行程式碼的時機點。

而 bottomsheet 還有提供一個 callback 可以讓我們使用。

該 callback 裡有兩個方法。

abstract void onSlide(View bottomSheet, float slideOffset)
Called when the bottom sheet is being dragged.

abstract void onStateChanged(View bottomSheet, int newState)
Called when the bottom sheet changes its state.

在 onStateChanged 裡便可以準確抓到 bottomSheet 現在是什麼狀態並且對做相對應的事了~


以下使用時遇到的坑。

通常 Android 的使用者習慣將 BottomSheet 關閉有三種手勢。

  1. 按 Android 特有的實體返回鍵。
  2. 點選 BottomSheet 以外空白處。
  3. 將 BottomSheet 往下滑。

前兩種操作並不會有什麼異常,但第三種操作 BottomSheet 會視為將 BottomSheet Hidden,固會將 state 改為上述的 STATE_HIDDEN ,還在後須呼叫 Bottomsheet 時若沒有手動呼叫將 state 改變為其他可視的狀態,就會出現 Bottomsheet 消失呼叫不出來的情況了!


上一篇
[Day 26] Android 實作 - BottomSheet(2)
下一篇
[Day 28] Android 實作 - SpannableStringBuilder(1)
系列文
Android心得筆記×Kotlin語法初探 不是新手村 是嬰兒村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言