我有一张应该在两种状态之间切换的底页,STATE_COLLAPSED
和 STATE_EXPANDED
当它折叠时,高度应该是200dp
展开后将全屏显示。
所以我设置BottomSheetBehavior
和
isFitToContents = false
peekHeight = 200dp
我被迫在
halfExpandedRatio
中设置一个值否则在 STATE_HALF_EXPANDED
时底部工作表将占据屏幕的一半。我正在使用
com.google.android.material:material:1.1.0-rc01
有没有办法禁用
STATE_HALF_EXPANDED
状态?或者我应该实际设置
skipCollapsed=true
,根据比率计算 200dp 的含义并使用 STATE_HALF_EXPANDED
和 STATE_EXPANDED
而不是 STATE_COLLAPSED
和 STATE_EXPANDED
最佳答案
我正在使用 Material 库版本 1.1.0 和 BottomSheetBehavior
类有这个属性skipCollapsed
, 如果您将其设置为 true
底部工作表将跳过 STATE_HALF_EXPANDED
.
这是我的代码:
class FilterBottomSheet : BottomSheetDialogFragment() {
private lateinit var behavior: BottomSheetBehavior<View>
override fun onStart() {
super.onStart()
behavior.state = BottomSheetBehavior.STATE_EXPANDED
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
val view = View.inflate(requireContext(), R.layout.filter_bottom_sheet, null)
val params = view.root.layoutParams as LinearLayout.LayoutParams?
params?.height = getScreenHeight()
view.root.layoutParams = params
dialog.setContentView(view)
behavior = BottomSheetBehavior.from(view.parent as View)
behavior.skipCollapsed = true
return dialog
}
private fun getScreenHeight(): Int = Resources.getSystem().displayMetrics.heightPixels
}
关于Android - 如何禁用底部工作表的 STATE_HALF_EXPANDED 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59487982/