BottomSheetBehavior基础使用

/ 0评 / 0

前言

好记性不如烂笔头,做个简简单单的记录~

基础使用

1、添加布局

在CoordinatorLayout的子布局中添加<code>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"
//折叠时的高度
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 设置(默认是0)
STATE_DRAGGING:过渡状态,此时用户正在向上或者向下拖动bottom sheet
STATE_SETTLING:视图从脱离手指自由滑动到最终停下的这一小段时间
STATE_EXPANDED:bottom sheet 处于完全展开的状态,展开的高度取决于layout_behavior的控件高度
STATE_HIDDEN:默认无此状态(可通过app:behavior_hideable 启用此状态),启用后用户将能通过向下滑动完全隐藏 bottom sheet

5、通过代码控制开关

/通过setState即可直接展开、折叠、隐藏
mViewBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);

发表评论

您的电子邮箱地址不会被公开。