持久的底部表格

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