2016-09-14 15 views
5

Tôi có một trang tính đáy có chiều cao và chiều rộng được đặt thành match_parent. Vì vậy, khi vào nút bấm tôi đặt hành vi để STATE_EXPANDED như thế này:Hiểu hành vi BottomSheet bị sập và ẩn

mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 

My Bottomsheet được định nghĩa như sau:

<FrameLayout 
     android:id="@+id/bottom_sheet" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:elevation="@dimen/design_appbar_elevation" 
     app:behavior_hideable="true" 
     app:layout_behavior="@string/bottom_sheet_behavior"> 

     <include 
      android:id="@+id/bottom_sheet_content" 
      layout="@layout/bottomsheet_layout" /> 

    </FrameLayout> 

Tôi đang theo dõi trạng thái với BottomSheet Callback.

  • Tôi nhấp vào nút và trang tính được mở rộng đến toàn màn hình.
  • Trạng thái hiện tại của nó là STATE_EXPANDED
  • Tôi nhanh chóng vuốt xuống trên trang tính dưới cùng. (Không kéo đầy đủ cho đến khi nó đóng cửa, swipe đơn giản xuống như di chuyển)
  • Nó dừng lại ở giữa và trạng thái của nó được ghi lại như STATE_COLLAPSED
  • Nếu tôi vuốt một lần nữa nó là tất cả đã biến mất và trạng thái của nó là STATE_HIDDEN

Tôi không hiểu tại sao nó dừng lại ở giữa. Làm thế nào tôi có thể làm cho nó ẩn với một swipe duy nhất.

Tôi đã thử điều đó bằng cách đặt peek_height thành 0dp. Bằng cách này, nó không bao giờ gặp STATE_HIDDEN. Khi bị ẩn, trạng thái của nó sẽ trở thành STATE_COLLAPSED. Tôi không hiểu tiểu bang này.

Làm cách nào để đạt được STATE_HIDDEN bằng một lần vuốt xuống?

Trả lời

4

Kinda trễ nhưng tôi chỉ vấp phải điều này trong khi tìm kiếm một cái gì đó tương tự.

Đây là cách bạn có thể bỏ qua tình trạng sụp đổ:

Trong XML bằng cách thêm app:behavior_skipCollapsed="true" đến xem BottomSheet.

HOẶC

Lập trình với setSkipCollapsed(boolean).

Các vấn đề liên quan