Я пытаюсь реализовать нижний лист в одном из своих действий, и я немного смущен тем, как он себя ведет!Попытайтесь понять поведение BottomSheet в библиотеке поддержки android 23.2.1
Так вот проблема, у меня есть деятельность, в которой я пытаюсь показать нижний лист, и я вижу, что:
если мы не установить
app:behavior_peekHeight
свойство, то нижний лист никогда не работаетЕсли установить PeekHeight на что-то меньше, чем 30dp (в основном только, чтобы скрыть его от экрана)
- Если вы установите
app:behavior_peekHeight
более чем 30dp в файле макета и попытаться установить состояниеbottomSheetBehavior
доSTATE_HIDDEN
в вас OnCreate метод вашего приложения аварий с этой ошибкой
вызвано следующими причинами:
Я действительно запутался почему он не позволяет мне скрывать в OnCreate? или почему мы не можем установить peekHeight в 0, чтобы он не отображался на экране, если мы не вызываем STATE_EXPANDED
или даже не устанавливаем, что это свойство должно по умолчанию его скрывать! или, по крайней мере, я должен уметь устанавливать его как скрытый в моем onCreate!
Я что-то упустил? или поведение жесткого диска BottomSheet?
мой файл макета для BottomSheet что-то вроде этого:
<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">
в моей деятельности я делаю что-то вроде этого:
@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);
}
В моей OnClick я это делаю:
@Override
public void onItemClick(View view, int position) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
ли вы вычисляете из причины для первого случая: если мы не установили свойство app: behavior_peekHeight, то нижний лист никогда не работает? я попал в то же самое. –
@ LạngHoàng Этот ответ может помочь вам http: // stackoverflow.com/a/36236743/3000299 – sujay