美文网首页
Kotlin 中BottomSheetDialog中禁止上下拖拽

Kotlin 中BottomSheetDialog中禁止上下拖拽

作者: 因为我的心 | 来源:发表于2023-09-03 11:32 被阅读0次

    一、前言:

    在开发中,我们遇到有些弹窗不需要上下拖拽的功能,也不需要点击阴影取消掉弹窗,可以使用以下方式实现。

    效果图.png

    二、代码实现

    1、BottomSheetDialog弹窗代码

    
        /**
         * 举报弹窗
         */
        var mBottomSheetReportDialog: BottomSheetDialog? = null
        inline fun recommendBookInfo(context: Activity, noinline result: (Boolean) -> Unit) {
            try {
                if (ClickUtils.isFastDoubleClick400()) {
                    if (mBottomSheetReportDialog == null) {
                        mBottomSheetReportDialog = BottomSheetDialog(context)
                        val bottomSheetView: View =
                            View.inflate(context, R.layout.dialog_bottom_recommend_book, null)
                        mBottomSheetReportDialog?.setContentView(bottomSheetView)
                        mBottomSheetReportDialog?.window?.findViewById<View>(R.id.design_bottom_sheet)
                            ?.setBackgroundColor(Color.TRANSPARENT)
    
                        // 设置点击阴影不取消对话框
                        mBottomSheetReportDialog?.setCanceledOnTouchOutside(false)
    
                        // 获取 BottomSheetBehavior
                        val behavior = BottomSheetBehavior.from(bottomSheetView.parent as View)
                        //设置展开模式
                        behavior.state = BottomSheetBehavior.STATE_EXPANDED
                        behavior.setBottomSheetCallback(object :
                            BottomSheetBehavior.BottomSheetCallback() {
                            override fun onStateChanged(bottomSheet: View, newState: Int) {
                                //设置展开模式
                                behavior.state = BottomSheetBehavior.STATE_EXPANDED
    //                            if (newState == BottomSheetBehavior.STATE_EXPANDED) {
    //                                 //Log.e("BottomSheet", "Expanded");
    //                            } else if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
    //                                 //Log.e("BottomSheet", "Collapsed");
    //                             }
                            }
    
                            override fun onSlide(bottomSheet: View, slideOffset: Float) {
                            }
                        })
    
                        //获取控件点击
                        val tvReport = bottomSheetView.findViewById<TextView>(R.id.tv_report)
                        val tvCancle = bottomSheetView.findViewById<TextView>(R.id.tv_cancle)
                        tvReport.setOnClickListener {
                            //举报
                            result.invoke(true)
                            mBottomSheetReportDialog?.dismiss()
                        }
    
                        tvCancle.setOnClickListener {
                            mBottomSheetReportDialog?.dismiss()
                        }
                    }
                    //显示
                    if (mBottomSheetReportDialog?.isShowing == false) {
                        mBottomSheetReportDialog?.show()
                    } else {
                        mBottomSheetReportDialog?.dismiss()
                    }
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    

    2、dialog_bottom_recommend_book.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <data>
    
        </data>
    
    
        <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/ui_dp_500"
            android:background="@drawable/btn_shap_26"
            app:layout_constraintBottom_toBottomOf="parent"
            >
    
            <View
                android:layout_width="match_parent"
                android:layout_height="@dimen/ui_dp_500"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                />
    
    
            <TextView
                android:id="@+id/tv_cancle"
                android:layout_width="match_parent"
                android:layout_height="@dimen/ui_dp_57"
                android:text="cancel"
                android:textColor="@color/black_6"
                android:textSize="@dimen/ui_sp_18"
                android:background="@drawable/btn_shap_27"
                android:gravity="center"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginHorizontal="@dimen/ui_dp_14"
                android:layout_marginBottom="@dimen/ui_dp_26"
                />
    
        </androidx.constraintlayout.widget.ConstraintLayout>
        </androidx.coordinatorlayout.widget.CoordinatorLayout>
    </layout>
    

    相关文章

      网友评论

          本文标题:Kotlin 中BottomSheetDialog中禁止上下拖拽

          本文链接:https://www.haomeiwen.com/subject/hjbfvdtx.html