持久的底部表格
你可以實現一個持久的底部工作表將 BottomSheetBehavior
附加到一個子檢視 CoordinatorLayout
:
<android.support.design.widget.CoordinatorLayout >
<!-- ..... -->
<LinearLayout
android:id="@+id/bottom_sheet"
android:elevation="4dp"
android:minHeight="120dp"
app:behavior_peekHeight="120dp"
...
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
<!-- ..... -->
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
然後在你的程式碼中,你可以使用以下命令建立引用
// The View with the BottomSheetBehavior
View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);
BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
你可以使用 setState()
方法設定 BottomSheetBehavior 的狀態 :
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
你可以使用以下狀態之一:
-
STATE_COLLAPSED
:此摺疊狀態是預設狀態,僅顯示底部佈局的一部分。可以使用app:behavior_peekHeight
屬性控制高度(預設為 0) -
STATE_EXPANDED
: 底板的完全展開狀態,其中整個底板是可見的(如果它的高度小於包含的CoordinatorLayout
)或整個CoordinatorLayout
被填充 -
STATE_HIDDEN
:預設情況下禁用(並使用app:behavior_hideable
屬性啟用),啟用此選項允許使用者向下滑動底部工作表以完全隱藏底部工作表
如果你想接收狀態更改的回撥,可以新增 BottomSheetCallback
:
mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
// React to state change
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});