Полноэкранный нижний лист с кнопкой "Закрыть" (X) вверху
Я пытаюсь реализовать нижний лист из библиотеки Google Design. Нажатие на кнопку должно открыть нижний лист, который охватывает все окно деятельности. Например, когда мы открываем письмо в папке "Входящие" Gmail. Но он должен открыться снизу и скользить вниз, чтобы распустить.
Нажатие кнопки должно открыть нижний лист, а при скольжении вниз или вверху слева кнопка "Закрыть" (X) должна закрыть лист.
Я настроил что-то вроде этого:
<android.support.design.widget.CoordinatorLayout
.. >
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/bottom_sheet_behavior">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello Bottom Sheet !!" />
</android.support.v4.widget.NestedScrollView>
<include layout="@layout/content_my_activity" />
</android.support.design.widget.CoordinatorLayout>
И я начинаю это так:
mBottomSheet = (NestedScrollView) findViewById(R.id.bottom_sheet);
mBottomSheetBehavior = BottomSheetBehavior.from(mBottomSheet);
mButton = (Button) findViewById(R.id.bottom_sheet_button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
Однако, когда я нажимаю на кнопку, текст просто появляется внизу. Перекрытие существующего содержимого по умолчанию. И нет черного прозрачного оттенка за нижним листом.
Как я могу сделать это на весь экран при нажатии на кнопку?
Причина, по которой я не использую фрагмент, заключается в том, что у меня есть несколько (много) переменных в зависимости от содержимого нижнего листа. Итак, если я показываю нижний лист через фрагмент, мне нужно передать и получить все данные туда и сюда. Чтобы избежать этого, я хочу, чтобы это было частью деятельности.
Есть ли способ, которым я могу достичь этого? Спасибо за вашу помощь.
2 ответа
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mBottomsheet.callOnClick();
}
});
Попробуйте этот код........
Когда вы нажимаете кнопку, вы можете считать, что это действие выглядит так, как будто ваш контейнер NestedScrollView стал видимым, поэтому оно будет происходить так же, как вы пишете в params.
android:layout_width="match_parent"
android:layout_height="wrap_content"
Если вы хотите, чтобы он полностью соответствовал родительскому росту, просто используйте
android:layout_height="match_parent"
Если говорить о теневом фоне, как у фрагмента, то можно обмануть, что вы можете установить альфа-цвет фона для NestedScrollView.
android:background="#64000000"
Но это взлом, вы можете использовать фрагмент и просто отправить ему всю информацию из деятельности и наоборот