持久的底部表格
你可以实现一个持久的底部工作表将 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
}
});