7

Sau khi chuyển sang phiên bản 24.2.1 của thư viện Hỗ trợ thiết kế Android từ phiên bản 23.4.0, BottomSheetBehavior ngừng hoạt động đối với tôi. BottomSheet hiển thị dưới dạng mở và không đóng khi gọi setState(BottomSheetBehavior.STATE_COLLAPSED). Điều này không xảy ra trên 23.4.0 của thư viện Design nơi BottomSheetBehaviour hoạt động cho tôi như mong đợi.Thư viện hỗ trợ thiết kế Android 24.2.1 làm cho BottomSheet mở khi khởi động

Có gì thay đổi trong phiên bản 24 yêu cầu sử dụng BottomSheetBehavior khác nhau không?

Dưới đây là file layout của tôi:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/button" 
     android:text="Open Bottom Sheet" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/close_button" 
     android:text="Close Bottom Sheet" 
     /> 

</LinearLayout> 
<LinearLayout 
    android:id="@+id/bottom_sheet" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:orientation="horizontal" 
    android:background="@android:color/holo_green_light" 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"/> 

Và đây là đoạn code Hoạt động mà tôi đang sử dụng:

public class ScrollingActivity extends AppCompatActivity implements View.OnClickListener { 

private View m_bottomSheet; 
private BottomSheetBehavior m_behaviour; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_scrolling); 

    m_bottomSheet = findViewById(R.id.bottom_sheet); 
    m_behaviour = BottomSheetBehavior.from(m_bottomSheet); 


    ((Button)findViewById(R.id.button)).setOnClickListener(this); 
    ((Button)findViewById(R.id.close_button)).setOnClickListener(this); 
} 
@Override 
public void onClick(View v) { 
    switch(v.getId()){ 
     case R.id.button: 
      m_behaviour.setState(BottomSheetBehavior.STATE_EXPANDED); 
      break; 
     case R.id.close_button: 
      m_behaviour.setState(BottomSheetBehavior.STATE_COLLAPSED); 
      break; 
    } 
} 

}

Mọi lời khuyên sẽ được đánh giá cao.

+0

http://stackoverflow.com/questions/39030742/bottomsheetbehavior-is-not-work-when-design-library-update-to-24-2 -0 –

Trả lời

11
m_behaviour.setPeekHeight(0); 

Nó mặc định là "cái nhìn" nhà nước, vì vậy nếu bạn không muốn nó lén nhìn tất cả, bạn cần phải thiết lập chiều cao ú đến 0.

+0

Cảm ơn, Scott. Nó hoạt động như dự định khi thiết lập m_behaviour.setPeekHeight (0) ban đầu, ví dụ: trong onCreate() –

2
app:behavior_peekHeight="0dp" 
app:layout_behavior="@string/bottom_sheet_behavior" 

Bạn có thể đặt xem chiều cao tới 0dp trong bố cục, không cần đặt nó theo chương trình

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