jav*_*oid 5 xml android kotlin bottom-sheet
我用以下 xml 代码创建了一个 BottomSheet:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#C57C3C"
tools:context=".MainActivity">
<TextView
android:id="@+id/tvState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="initial state" />
<LinearLayout
android:id="@+id/linBottomSheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<include
layout="@layout/dialog_bottomsheet_half"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
在我的底部工作表用户界面上,我有三个线性布局。命名为linHeader,linOne和linTwo. 在第一种状态下,这个线性布局消失了,除了linHeader。
我使用此代码来显示我的底页:
val behavior = BottomSheetBehavior.from(linBottomSheet)
behavior.isFitToContents = false
behavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
override fun onStateChanged(bottomSheet: View, newState: Int) {
when (newState) {
BottomSheetBehavior.STATE_COLLAPSED -> {
Log.e("bottom", "STATE_COLLAPSED")
}
BottomSheetBehavior.STATE_HALF_EXPANDED -> {
Log.e("bottom", "STATE_HALF_EXPANDED")
}
BottomSheetBehavior.STATE_EXPANDED -> {
Log.e("bottom", "STATE_EXPANDED")
}
BottomSheetBehavior.STATE_DRAGGING -> {
Log.e("bottom", "STATE_DRAGGING")
}
BottomSheetBehavior.STATE_HIDDEN -> {
Log.e("bottom", "STATE_HIDDEN")
}
BottomSheetBehavior.STATE_SETTLING -> {
Log.e("bottom", "STATE_SETTLING")
}
}
}
var oldOffSet = 0f
override fun onSlide(bottomSheet: View, slideOffset: Float) {
val inRangeExpanding = oldOffSet < slideOffset
val inRangeCollapsing = oldOffSet > slideOffset
oldOffSet = slideOffset
}
})
Run Code Online (Sandbox Code Playgroud)
为了启用half-expand状态我需要使用这一行:
behavior.isFitToContents = false
Run Code Online (Sandbox Code Playgroud)
我需要linOne在 BottomSheet 处于半展开状态时使其可见。当我将布局拖动到扩展用户界面时,linTwo此时也可见。但因为使用
behavior.isFitToContents = false
Run Code Online (Sandbox Code Playgroud)
在half-expanded状态下,bottomSheet 高度不适合内容。
我该如何解决这个问题?
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |