BottomSheetDialogFragment не заполняет желаемую высоту и всегда переносит содержимое.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 BottomSheetDialogFragment не заполняет желаемую высоту и всегда переносит содержимое.

Сообщение Anonymous »

Я реализую BottomSheetDialogFragment, который я хотел бы сначала заполнить половину экрана с возможностью перетащить его на весь экран или перетащить вниз, чтобы закрыть. Чтобы упростить реализацию и найти источник моей проблемы, я создал простой файл макета с красным фоном и текстовым представлением. Проблема, с которой я сталкиваюсь, заключается в том, что даже когда я устанавливаю для параметра Behavior.state значение STATE_HALF_EXPANDED, верхняя часть диалогового окна нижнего листа находится на середине моего экрана, но фон переносится, чтобы соответствовать моему текстовому представлению, а не расширяется, чтобы заполнить все ниже. это. Я все еще могу перетащить его на весь экран, но опять же, фон переносится на мое текстовое представление, а не заполняет доступное пространство ниже. Аналогично, если я удалю textView, ничего не будет показано, кроме черного непрозрачного фона, который находится за BottomSheetDialogFragment
Вот мой файл макета, который я использую для своего BottomSheetDialogFragment (text.xml):< /p> Вот моя реализация BottomSheetDialogFragment:

Код: Выделить всё

class TestBottomSheet: BottomSheetDialogFragment() {

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.test, container, false)
}

override fun onViewCreated(
view: View,
savedInstanceState: Bundle?
) {
super.onViewCreated(view, savedInstanceState)

val behavior = BottomSheetBehavior.from(requireView().parent as View)
behavior.peekHeight = resources.displayMetrics.heightPixels / 2
behavior.isHideable = true
behavior.isDraggable = true
behavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
}
}
А вот моя функция в моей активности, которая показывает BottomSheetDialogFragment.

Код: Выделить всё

private val onButtonClick = View.OnClickListener {
val bottomSheetFragment = TestBottomSheet()

bottomSheetFragment.show(supportFragmentManager, "BottomSheetDialog")
}
Вот скриншоты того, что я вижу:

Когда «behavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED»

Изображение

Когда "behavior.state = BottomSheetBehavior.STATE_EXPANDED"< /p>
Изображение

Я также попробовал обернуть свой test.xml в координаторLayout с тем же результатом. Я хотел бы, чтобы красный фон заполнял половину экрана с текстовым представлением по центру, поскольку конечный результат этого BottomSheetDialogFragment будет иметь переменное содержимое, которое может занимать больше или меньше половины размера экрана, но BottomSheetDialogFragment всегда должен занять половину экрана с возможностью при желании перетащить его на весь экран.

Подробнее здесь: https://stackoverflow.com/questions/783 ... ps-content
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»