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