第一种、将dialog的高度和behavior的setPeekHeight的高度设置为一致的时候,就可以让该控件不可拖拽

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialogbind = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_car_often_group, null, false)val wm = activity!!.windowManagerval height = wm.defaultDisplay.heightmMaxSlideHeight = (0.85f * height).toInt()dialog.setOnShowListener {val bottomSheet = (it as BottomSheetDialog).findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout?val behavior = BottomSheetBehavior.from(bottomSheet!!)behavior.state = BottomSheetBehavior.STATE_EXPANDED//设置peek高度behavior.setPeekHeight(mMaxSlideHeight)//是否下拉关闭dialog//behavior.setHideable(false)}if (mMaxSlideHeight > 0) {//设置dialog高度val params =ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mMaxSlideHeight)dialog.setContentView(bind.root, params)} else {val params = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)dialog.setContentView(bind.root, params)}// Do something with your dialog like setContentView() or whateverreturn dialog}

第二种、设置addBottomSheetCallback监听,在onStateChanged的状态变化时都设置为展开状态,同时要设置最大高度。但是这样就会导致下拉关闭功能失效

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {val dialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialogbind = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_car_often_group, null, false)val wm = activity!!.windowManagerval height = wm.defaultDisplay.heightval mMaxSlideHeight = (0.55f * height).toInt()dialog.setOnShowListener {val bottomSheet = (it as BottomSheetDialog).findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout?val behavior = BottomSheetBehavior.from(bottomSheet!!)behavior.state = BottomSheetBehavior.STATE_EXPANDEDbehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {override fun onStateChanged(bottomSheet: View, newState: Int) {if (newState == BottomSheetBehavior.STATE_DRAGGING) {behavior.state = BottomSheetBehavior.STATE_EXPANDED}}override fun onSlide(bottomSheet: View, slideOffset: Float) {}})behavior.setHideable(false)}if (mMaxSlideHeight > 0) {val params =ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mMaxSlideHeight)dialog.setContentView(bind.root, params)} else {val params = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)dialog.setContentView(bind.root, params)}// Do something with your dialog like setContentView() or whateverreturn dialog
}

设置BottomSheetDialogFragment不可拖拽相关推荐

  1. html设置图片不可拖拽,js css3实现图片拖拽效果

    本文实例为大家分享了css3实现图片拖拽效果的具体代码,供大家参考,具体内容如下 body{ text-align: center; } .container{ display: flex; just ...

  2. VirtualBox虚拟机与主机之间复制粘贴设置以及文件拖拽

    一.在虚拟机设置界面->常规 中选择双向 二.在虚拟机设置界面->存储 中进行如下勾选 三.在虚拟机设备选项中选择'安装增强功能' 如果有挂载错误Could not mount the m ...

  3. textarea禁止拖拽设置

    设置textarea禁止拖拽右下角改变大小 <textarea style="resize:none;"></textarea>

  4. recycleView 滑动删除Item,拖拽切换Item,你想了解的都在这儿

    滑动删除Item,拖拽切换Item,你想了解的都在这儿 概述 如果上两篇对RecyclerView介绍后,依然没有引起你的兴趣,那么下面关于RecyclerView的使用我相信一定会让你如获珍宝.直接 ...

  5. 可视化拖拽 UI 布局之拖拽篇

    前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...

  6. vue拖动改变模板_可视化拖拽 UI 布局之拖拽篇

    前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...

  7. Javascript自由拖拽类

    基本拖拽 new Dragdrop({target 拖拽元素 HTMLElemnt 必选bridge 指定鼠标按下哪个元素时开始拖拽,实现模态对话框时用到 dragable 是否可拖拽 (true)默 ...

  8. EasyUI中放置Droppable的使用以及实现拖拽排序

    场景 效果 实现 webapp下新建droppable文件夹,在其下新建basic.html <!DOCTYPE html> <html lang="en"> ...

  9. [转] 小结js屏幕、浏览器、页面大小(三)———拖拽

    小结js屏幕.浏览器.页面大小(三)---拖拽 (据说今天提前一个小时下班,哦耶...马上过年了,先给大家拜个年,祝大家新年快乐,龙年大吉...) 续上一篇,在之前的再次扩展了几个方法,本次扩展的主要 ...

最新文章

  1. 观看马云网商大会视频的一些感想.
  2. SpringBoot中请求映射的原理(源码)
  3. tensorflow随笔-acosh,acos
  4. dbus-glib-0.108 arm交叉编译
  5. 关于 SAP UI5 对服务器端渲染 Server Sider Render 的支持问题
  6. SAP Spartacus里的routerLink测试
  7. android 打印机蜂鸣器,CANON喷墨打印机 蜂鸣器响5声不打印的问题解决办法
  8. 20165318 结对编程项目-四则运算 阶段总结
  9. php生成字母数字订单,php生成唯一订单号可控制位数字母和数字
  10. 【Java数据结构】线索二叉树
  11. 你的不好意思,正在摧毁你
  12. unity 3D入门
  13. 用Python对全国火车站数量进行分析,发现东北三省竟然占了2成!
  14. 24.FFmpeg学习笔记 - 用libavfilter转换原始音频格式1
  15. c语言打印星号金字塔图形
  16. 数据是一把双刃剑,IPFS/FIL存储助力发展,合理应用技术中
  17. mysql count 1_MySQL中count(1)和count(*)的区别是什么?
  18. 拆分可再生能源业务上市,华润电力意欲何为?
  19. 苹果应用分身_苹果微信双开,现在可以了。
  20. PHP简单的伪静态URL机制实现

热门文章

  1. python计算ema_python – 添加一个列(EMA),它是pandas中先前新列值的结果
  2. 四位行波进位加法器_【HDL系列】超前进位加法器原理与设计
  3. TIB自动化测试快讯 -- 自动化测试空间一周精选(2012-2-6)
  4. 李航《统计学习方法》第2版 第2章课后习题答案
  5. 修复MBR的工具MBRFix下载
  6. 【答学员问】 考研还是就业:如何选择未来职业道路?
  7. 【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 | 新发出品 | 良心教程)
  8. windows2012R2离线安装.NETFX3.5
  9. NLP-D9-第一场大数据比赛D1知识蒸馏翻译论文CATTI备考-第一套综合
  10. HTTP响应码大全详解