Это мой первый вопрос в этом невероятном сообществе.
Я разрабатываю приложение для Android в kotlin. Мне нужен постоянный нижний лист (не модальный). Я разработал все поведение, которое мне было нужно, за исключением одной детали.
Мне нужно установить де STATE_HALF_EXPANDED, по умолчанию это 50% экрана, а мне нужно 70%. Я посетил этот вопрос: Как я могу установить Half Expanded состояние для моего нижнего листа
В этом вопросе пользователь Adauton Heringer объясняет, как это сделать, в одном из ответов. Он сказал:
behavior = BottomSheetBehavior.from(your_bottom_sheet_xml)
behavior.isFitToContents = false
behavior.halfExpandedRatio = 0.6f
Я попробовал то же самое, потому что это выглядит очень просто. Я сделал две первые строки, но когда я пытаюсь использовать setHalfExpandedRatio(), как будто его не существует. Я проверил официальную документацию, и это общедоступный метод.
Я делаю что-то неправильно?
Мой код таков:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
var bottomSheet: View = view.findViewById(R.id.departures_bottomsheet)
bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet)
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
bottomSheetBehavior.isFitToContents = false
// this doesn't work for me
// bottomSheetBehavior.halfExpandedRatio = 0.7
bottomSheetBehavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
override fun onSlide(p0: View, dragPoint: Float) {
val upper = 0.66
val lower = 0.33
if (dragPoint >= upper) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
}
if (dragPoint < upper && dragPoint >= lower) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HALF_EXPANDED
}
if (dragPoint < lower) {
bottomSheetBehavior.state = BottomSheetBehavior.STATE_COLLAPSED
}
}
override fun onStateChanged(p0: View, p1: Int) {
}
} )
}
У меня есть этот импорт: import com.google.android.material.bottomsheet.BottomSheetBehavior
И эта реализация в build.gradle приложения: implementation 'com.google.android.material:material:1.0.0'
В файле макета View является потомком CoordinatorLayout.
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/globalMap"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.circularreveal.CircularRevealLinearLayout
android:id="@+id/departures_bottomsheet"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
app:behavior_peekHeight="80dp"
app:layout_behavior="@string/bottom_sheet_behavior">
Я перешел к BottomSheetBehavior.class в Android Studio, и этот метод не существует.
Любая помощь приветствуется, и я буду благодарен.
Если я не найду другого способа, я создам подкласс с помощью этого метода.