Tôi đang cố gắng triển khai Trang tính dưới cùng trong một trong các hoạt động của mình và tôi hơi bối rối bởi cách hoạt động của nó!Hãy thử Hiểu hành vi của BottomSheet trong thư viện hỗ trợ Android 23.2.1
Vì vậy, đây là vấn đề, tôi có một hoạt động mà tôi đang cố gắng để hiển thị dưới tấm và tôi thấy rằng:
nếu chúng tôi không thiết lập các
app:behavior_peekHeight
tài sản sau đó bảng dưới không bao giờ làm việcNếu bạn đặt PeekHeight một cái gì đó ít hơn 30dp (về cơ bản chỉ để che giấu nó từ màn hình)
- Nếu bạn đặt
app:behavior_peekHeight
đến hơn 30dp trong file layout và cố gắng thiết lập trạng thái củabottomSheetBehavior
-STATE_HIDDEN
trong bạn onCreate phương pháp treo ứng dụng của bạn với lỗi này
do:
Tôi thực sự bối rối về việc tại sao là nó không cho phép tôi để che giấu nó trong onCreate? hoặc tại sao chúng ta không thể đặt peekHeight thành 0 để nó không hiển thị trên màn hình trừ khi chúng ta gọi STATE_EXPANDED
hoặc thậm chí không thiết lập thuộc tính đó nên mặc định nó ẩn đi! hoặc ít nhất tôi sẽ có thể thiết lập nó như là ẩn trong onCreate của tôi!
Tôi có thiếu gì đó không? hoặc là hành vi của BottomSheet cứng nhắc?
file layout của tôi cho BottomSheet là một cái gì đó như thế này:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="100dp"
android:orientation="vertical"
app:behavior_hideable="true"
app:behavior_peekHeight="40dp" <!-- I cant set this less than 30dp just to hide-->
app:layout_behavior="@string/bottom_sheet_behavior"
tools:context="someActivity"
android:id="@+id/addressbottomSheet"
tools:showIn="@layout/some_activity">
trong hoạt động của tôi Tôi đang làm một cái gì đó như thế này:
@InjectView(R.id.addressbottomSheet)
View bottomSheetView;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView);
// only if I have set peek_height to more than 30dp
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
}
Trong tôi onclick tôi đang làm điều này:
@Override
public void onItemClick(View view, int position) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
Bạn có hình lý do cho trường hợp đầu tiên: nếu chúng ta không thiết lập các ứng dụng: behavior_peekHeight bất động sản sau đó tờ Bottom không bao giờ hoạt động? tôi đã vào cùng. –
@ LạngHoàng câu trả lời này có thể giúp bạn http: // stackoverflow.com/a/36236743/3000299 – sujay