前言
好记性不如烂笔头,做个简简单单的记录~
基础使用
1、添加布局
在CoordinatorLayout的子布局中添加
app:layout_behavior="@string/bottom_sheet_behavior"
即可
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/ttttttt"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#ffffff"
app:behavior_draggable="false"
app:behavior_peekHeight="0dp"
app:layout_behavior="@string/bottom_sheet_behavior">
<TextView
android:id="@+id/l_66666666"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="山不在高,有仙则名有仙则名有仙则名有仙则名有仙则名有仙则名有仙则名有仙则名有仙则名。" />
</FrameLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
2、代码使用
//定义BottomSheetBehavior对象
private BottomSheetBehavior<View> mViewBottomSheetBehavior;
//获取义BottomSheetBehavior对象,mTargetView为定义layout_behavior的View
mViewBottomSheetBehavior = BottomSheetBehavior.from(mTargetView);
3、可配置属性解析
//下拉是否可以全部隐藏,默认false
app:behavior_hideable="true"
//设置折叠状态的显示高度(STATE_COLLAPSED)
app:behavior_peekHeight="100dp"
//下拉时是否可以跳过折叠状态直接隐藏,默认false
app:behavior_skipCollapsed="true"
//是否可以拖动,默认true
app:behavior_draggable="false"
//对应api
setHideable()
setPeekHeight()
setSkipCollapsed()
setDraggable()
4、BottomSheetBehavior几个状态以及监听
STATE_COLLAPSED:默认的折叠状态, bottom sheets只在底部显示一部分布局。显示高度可以通过 app:behavior_peekHeight 设置
STATE_DRAGGING:过渡状态,此时用户正在向上或者向下拖动bottom sheet
STATE_SETTLING:视图从脱离手指自由滑动到最终停下的这一小段时间
STATE_EXPANDED:bottom sheet 处于完全展开的状态,展开的高度取决于layout_behavior的控件高度
STATE_HIDDEN:默认无此状态(可通过app:behavior_hideable 启用此状态),启用后用户将能通过向下滑动完全隐藏 bottom sheet
监听方法
mViewBottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
}
/**
*
* @param bottomSheet
* @param slideOffset The new offset of this bottom sheet within [-1,1] range.
* Offset increases as this bottom sheet is moving upward.
* From 0 to 1 the sheet is between collapsed and expanded states
* and from -1 to 0 it is between hidden and collapsed states.
*/
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
5、通过代码控制开关
/通过setState即可直接展开、折叠、隐藏
mViewBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);