Android - 如何禁用底部工作表的 STATE_HALF_EXPANDED 状态

标签 android material-components-android

我有一张应该在两种状态之间切换的底页,STATE_COLLAPSEDSTATE_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_EXPANDEDSTATE_EXPANDED而不是 STATE_COLLAPSEDSTATE_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/

相关文章:

运行套接字时android无法关闭对话框

android - 无法使用 Material 组件库设置按钮的背景颜色

Android - ImageView 只有一个圆角

android - 具有微调器样式的 Materialdatepicker

android - 如何在 Android 中将数据导出到 csv 文件?

android - ListView 中每个项目的单独首选项?

java - Retrofit 库的 onResponse 方法的响应始终返回 null

android - 在 Android Switch Material 中插入文本

android - 为什么我的 Android 按钮没有显示正确的背景?

android - 奇怪的 View.getHitRect() 行为