Как Вы устанавливаете состояние расширения фрагмента BottomSheetDialogFragment
к расширенному использованию BottomSheetBehavior#setState(STATE_EXPANDED)
пользование Библиотекой Дизайна Поддержки Android (v23.2.1)?
https://code.google.com/p/android/issues/detail? id=202396 говорит:
Нижние листы установлены на STATE_COLLAPSED сначала. Назовите BottomSheetBehavior#setState (STATE_EXPANDED), если Вы хотите развернуть его. Обратите внимание, что Вы не можете назвать метод перед разметками представления.
Предложенная практика требует, чтобы представление было расширено сначала, но я не уверен, как я установлю BottomSheetBehaviour на фрагмент (BottomSheetDialogFragment
).
View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
Я думаю, что те, которые выше, лучше. Печально я не нашел их решением, прежде чем я решил. Но запишите мое решение. весьма схожий со всеми.
==================================================================================
я сталкиваюсь с той же проблемой. Это - то, что я решил. Поведение скрыто в BottomSheetDialog, который доступен для получения поведения, Если требуется не изменить родительское расположение, чтобы быть CooridateLayout, можно попробовать это.
ШАГ 1: настройте шаг 2 BottomSheetDialogFragment
open class CBottomSheetDialogFragment : BottomSheetDialogFragment() {
//wanna get the bottomSheetDialog
protected lateinit var dialog : BottomSheetDialog
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
return dialog
}
//set the behavior here
fun setFullScreen(){
dialog.behavior.state = STATE_EXPANDED
}
}
: заставьте свой фрагмент расширить этот специализированный фрагмент
class YourBottomSheetFragment : CBottomSheetDialogFragment(){
//make sure invoke this method after view is built
//such as after OnActivityCreated(savedInstanceState: Bundle?)
override fun onStart() {
super.onStart()
setFullScreen()//initiated at onActivityCreated(), onStart()
}
}
Подобный ответ uregentx, в [1 114] kotlin, можно объявить класс фрагмента, который расширяется от BottomSheetDialogFragment
, и когда представление создается, можно установить диалоговое состояние по умолчанию слушателя после того, как диалоговое окно отображено.
STATE_COLLAPSED: нижний лист видим, но только показывает свою высоту быстрого взгляда.
STATE_EXPANDED: нижний лист видим и его максимальная высота.
STATE_HALF_EXPANDED: нижний лист видим, но только показывает свою половину высоты.
class FragmentCreateGroup : BottomSheetDialogFragment() {
...
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {
// Set dialog initial state when shown
dialog?.setOnShowListener {
val bottomSheetDialog = it as BottomSheetDialog
val sheetInternal: View = bottomSheetDialog.findViewById(com.google.android.material.R.id.design_bottom_sheet)!!
BottomSheetBehavior.from(sheetInternal).state = BottomSheetBehavior.STATE_COLLAPSED
}
val view = inflater.inflate(R.layout.fragment_create_group, container, false)
...
return view
}
}
Не забывают использовать существенную реализацию дизайна в gradle.
implementation "com.google.android.material:material:$version"
Также смотрят к существенной ссылке дизайна Нижние Листы