持久的底部表格

你可以實現一個持久的底部工作表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  
   }  
 });