2017-07-25 36 views
0

我正在嘗試創建一個完全展開或完全看不到的底部表單 - 我不希望它處於中間或窺視的任何位置。EXPERSED與HIDDEN之間的底部表格停止操作

這裏的XML:

<LinearLayout 
     android:id="@+id/bottom_sheet" 
     android:layout_width="250dp" 
     android:layout_height="250dp" 
     android:layout_gravity="center_horizontal" 
     android:background="@android:color/holo_blue_bright" 
     android:clipToPadding="true" 
     android:orientation="vertical" 
     android:elevation="10dp" 
     app:behavior_peekHeight="0dp" 
     app:behavior_hideable="true" 
     app:behavior_skipCollapsed="true" 
     app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> 

     <TextView 
      android:id="@+id/delete_btn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:background="@color/cinza3" 
      android:text="clear/delete Q"/> 
</LinearLayout> 

在我的代碼有以下幾種方法:

private void showHideBottomSheet() { 
     if (mBSBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) { 
      showBottomSheet(); 
     } else { 
      hideBottomSheet(); 
     } 
    } 


    private void showBottomSheet() { 
     mBSBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 
    } 


    private void hideBottomSheet() { 
     mBSBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); 
    } 

而且在我的佈局有一個按鈕,要求showHideBottomSheet點擊時()。

當我點擊按鈕時,一切正常,底部顯示/隱藏。但是,如果它是EXPANDED,並且我在代碼的其他地方(底部表單外部)單擊了textview,底部表單會向下移動一點,但不完全 - 它的上半部分是可見的,但是如果我記錄它的狀態,則是STATE_EXPANDED。

  1. STATE_HIDDEN和STATE_COLLAPSED有什麼區別?我到處搜索了一個視覺解釋,但無法找到它。這個「中間」狀態是摺疊狀態嗎?即使我在xml和skipCollapsed =「true」中設置了peekHeight =「0」?
  2. 在xml中,peekHeight和skipCollapsed實際上做了什麼?
  3. 我該如何讓它在任何時候都完全可見或完全隱藏,並避免這種「中間」狀態?

編輯:BottomSheet裏面有一個TextView,和OnClickListener。當我點擊它時,即使OnclickListener沒有調用setState或任何與BottomSheet相關的東西,BottomSheet也會進入'中間'狀態。

回答

1

更新我的支持:設計庫到25.3.1,並開始按預期工作。

+0

我想這也是你的問題的原因,你有身高和你的''LinearLayout'機器人的寬度:layout_width =「250dp」 機器人:layout_height =「250dp」' –