BottomSheetDialog 禁止滑动(直接固定不动),解决与弹窗内的地图滑动冲突,并且点击外部关闭

Android---底部弹窗之BottomSheetDialog 通过BottomSheetDialog简单实现底部弹窗。比如,经常用到的更换头像操作。 阅读详情
AI摘要

本文探讨了在Android中使用BottomSheetDialog时,如何处理其与内置地图滑动冲突的问题,分享了自定义BottomSheetDialog并禁止滑动的详细步骤,包括设置BottomSheetBehavior和监听状态变化的技巧。

最近又遇到一个小小问题,BottomSheetDialog弹窗总是会滑动,从网上找了一大片解决办法都是解决禁止下滑关闭的问题的,但是还是会有一点点的滑动效果,正好这个一点点的滑动效果遇到了地图----BottomSheetDialog弹窗内添加了一个地图,地图也可以滑动,BottomSheetDialog也可以滑动,这可真是爽歪歪。

首先多说一句如何使用BottomDialog

在这里插入图片描述

 //底部弹窗依赖
    implementation 'com.github.SmartCyl:BottomDialog:1.0.4'

在这里插入图片描述

 maven { url 'https://jitpack.io' }

废话不多说,先上图

在这里插入图片描述
首先写一个类去继承 BottomSheetDialog (下图)

在这里插入图片描述

然后重写(下图),注意!!不要从这个方法里直接去查找布局文件,哪个类里面调用这个方法,通过参数的方式将 布局view 传过来,为禁止滑动埋下伏笔。

在这里插入图片描述
这是在需要用到的类里面去调用自定义的弹窗,并进行一些操作,见下图
在这里插入图片描述
这部分是自定义的弹窗里面的关键代码部分,贴码在最后
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210430110143389.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FzX3RoaW4=,size_16,color_FFFFFF,t_70

贴码:

自定义的弹窗里面添加(也就是继承BottomSheetDialog 的类里面) 这是禁止滑动的精髓。

 BottomSheetBehavior bottomSheetBehavior;

    public void setmBottomSheetCallback(View sheetView) {
        if (bottomSheetBehavior == null) {
            bottomSheetBehavior = BottomSheetBehavior.from(sheetView);
        }
        bottomSheetBehavior.setBottomSheetCallback(mBottomSheetCallback);
    }

    //此部分为禁止该弹窗可滑动
    private BottomSheetBehavior.BottomSheetCallback mBottomSheetCallback
            = new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(@NonNull View bottomSheet,
                                   @BottomSheetBehavior.State int newState) {
            if (newState == BottomSheetBehavior.STATE_DRAGGING) {//判断为向下拖动行为时,则强制设定状态为展开
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED );
            }
            if (newState == BottomSheetBehavior.STATE_SETTLING ){
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED );
            }
            if (newState == BottomSheetBehavior.STATE_EXPANDED  ){
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED );
            }
            if (newState == BottomSheetBehavior.STATE_COLLAPSED  ){
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED );
            }
            if (newState == BottomSheetBehavior.STATE_HIDDEN   ){
                bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED );
            }

        }

        @Override
        public void onSlide(@NonNull View bottomSheet, float slideOffset) {
         //  LogUtil.e(TAG, "onSlide——>" + slideOffset);
        }
    };

调用时的代码(我已进行注释修改):

 //查找布局文件
    View view = LayoutInflater.from(this).inflate(R.layout.弹窗的布局文件,null,false);
    //调用自定义弹窗,并将布局文件传过去
    LocationPopWindow testPopWindow = new LocationPopWindow(this,view);
        //调用禁止滑动方法
        testPopWindow.setmBottomSheetCallback((View) view.getParent());
        //展示弹窗
        testPopWindow.show();
        //通过弹窗查找 弹窗内的控件,即可对控件进行操作
        wv_content = testPopWindow.findViewById(R.id.wv_content);
        //当弹窗关闭时进行操作
        testPopWindow.setOnDismissListener(dialogInterface -> {
              //这里面写弹窗关闭时进行什么样的操作
    });
Android BottomSheetDialog使用详解 有时候遇到需要交互的,设计金额的,接口请求的底部弹窗,则需要自定义BottomSheetDialog,下面是一个简单实现。= null!) {): View {) {// 设置点击事件Toast.makeText(requireContext(), "确认按钮点击", Toast.LENGTH_SHORT).show()dismiss() // 关闭弹窗dismiss() 阅读详情

相关推荐

Android代码-网易云音乐效果的-BottomSheetDialog。

> 作者:林冠宏 / 指尖下的幽灵 > 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 > 博客:http://www.cnblogs.com/linguanh/ > GitHub : https://github.com/af913337456/ > 腾讯云专栏: https://cloud.tencent.com/developer/user/1148436/activities 首先是-- Android SDK 自带的 BottomSheetDialog 下面的 gif 图是一个Android SDK 自带的 BottomSheetDialog 内部加了 RecyclerView 列表控件的效果 可以看出: 下滑动作会收起,隐藏掉 dialog 上滑会完全展开 展开后,才能滑动 RecyclerView 内部 其次 如果你内部使用的是 ListView 列表控件,你会发现会有其他奇怪的情况。 然后是--网易云音乐 的 BottomSheetDialog 下面的 gif 图是一个Android 版 网易云音乐的B

BottomSheetDialog 使用详解,设置圆角、固定高度、默认全屏等

效果 MD风格的底部弹窗,比自定义dialog或popupwindow使用更简单,功能也更强大。 其实细分来说,是BottomSheet、BottomSheetDialog、BottomSheetDialogFragment BottomSheet 与主界面同层级关系,可以事件触发,如果有设置显示高度的话,也可以拉出来,且不会影响主界面的交互。 XML <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.

yechaoa 3万+

DeepSeek研发的精算大模型「精卫」已实现98%精算任务覆盖,中国人寿采用后年节约3.2亿元技术采购成本,形成关键技术替代效应

根据现有资料,精算领域关键技术替代效应的行业标准定义尚未明确具体提及。然而,可以从相关文献中提取一些关键概念和方法来推导出可能的定义。​替代效应的基本定义​:替代效应是指一种商品价格变动引起另一种商品的相对价格变动,从而导致消费者在维持原有效用水平不变的条件下对商品需求量做出的调整。​技术替代效应​:在精算领域,技术替代效应可以理解为新技术或新方法对现有技术或方法的替代,从而影响精算模型、数据处理和决策过程。例如,机器学习在精算中的应用日益增长,改变了精算师的工作方式和模型构建方法。​。

百态·数智思维 | 聚焦大数据、量化与未来AI 1712

Android BottomSheetDialogFragment禁止下拉取消弹框

下面几行代码轻松搞定~ @Override public void onStart() { super.onStart(); final View view = getView(); view.post(new Runnable() { @Override public void run() { View paren...

54hk的博客 3066

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 394

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南

本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。

weixin_32597009的博客 623

BottomSheetDialog禁止滑动关闭但允许点击背景关闭

BottomSheetDialog禁止滑动关闭但允许点击背景关闭问题解决方案 问题 BottomSheetDialog是一个很好用的官方底部弹出层,但是不能够直接设置禁止滑动关闭但允许点击背景关闭,解决起来很麻烦,这里有个简单的方案(分析源码所得) 解决方案 contentView.post(() -&amp;gt; { //contentView是自定义的显示在BottomSheet...

u010565036的博客 1万+

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

Android 基于BottomSheetDialog 自定义底部弹出Dialog

前言 BottomSheetDialog 是 Android 6.0 推出的新控件,即 Base class for Dialogs styled as a bottom sheet 基于Dialog样式的一个底部对话框 但原生控件可扩展性往往满足不了日常开发,于是自己基于它自定义一个Dialog,使用方便,可扩展性高 一、效果 二、使用步骤 1.引入库 implementation 'androidx.recyclerview:recyclerview:1.1.0' 2.代码

X_sunmmer的博客 9616

从DC到DCG:手把手教你搭建物理感知综合流程(含DEF文件处理避坑指南)

本文详细介绍了从Design Compiler(DC)过渡到DC Topographical(DCT)和DC Graphical(DCG)的完整操作框架,特别针对DEF文件处理提供避坑方案。通过环境准备、工具升级、DEF文件处理、DCG综合配置等步骤,帮助开发者高效应对28nm以下工艺节点的物理感知综合挑战,显著提升时序收敛效率。

weixin_27966471的博客 381

第二天 原来Labview语言结构也挺自然(2.1 顺序结构)

新建项目文件StructureTest.lvproj,新建四个子VI(FlatSequence.vi、CaseStructure.vi、LoopStructure.vi、EventStructure.vi),具体新建流程可以参考1.2节。

weixin_38637405的博客 1004

BottomSheetDialogFragment禁止上下拖动

一个简单设置禁止BottomSheetDialogFragment上下拖动关闭弹窗

zsgCXB的博客 2299

【AI智能体】基于Coze 制作高质量PPT实战操作详解

基于Coze 制作高质量PPT实战操作详解

congge 6102

Android studio如何用BottomSheetDialog实现底部弹窗

因为必须要使用Dialog,使用上局限相对多,因此一般适用于底部弹出的轻交互弹窗,如底部说明弹窗等。BottomSheetDialogFragment 的使用同普通的Fragment一样,可以将交互和UI写到Fragment内,适合一些有简单交互的弹窗场景,如底部分享弹窗面板等。BottomSheetBeahvior 一般直接作用在view上,一般在xml布局文件中直接对view设置属性,轻量级、代码入侵低、灵活性高,适用于复杂页面下的半屏弹出效果。对BottomSheetDialog中控件实现监听事件。

weixin_73928886的博客 2158

14、微电网控制方法与建模分析

本文详细探讨了微电网的控制方法与建模分析,包括逆变器的小信号状态空间模型、网络模型、负载模型及其组合形成的完整微电网模型。通过对系统特征值和灵敏度因子的分析,揭示了不同模式与系统参数之间的关系。文章还提出了多个研究问题,如岛式系统控制器设计、风力发电控制、并网变换器控制等,为微电网的稳定性分析和优化控制提供了理论支持和实践方向。

elastic6hunter的博客 124

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Android】BottomSheet基本用法总结(BottomSheetDialog,BottomSheetDialogFragment)

是一种位于屏幕底部的面板,用于显示附加内容或选项。提供了从屏幕底部向上滑动显示内容的交互方式。这种设计模式在 Material Design 中被广泛推荐,因为它可以提供一种优雅且不干扰主屏幕内容的方式来展示额外信息或操作。具体实现主要包含:BottomSheetBeahvior 、BottomSheetDialog、BottomSheetDialogFragment。

Patrick_yuxuan的博客 3768

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

BottomSheetDialog禁止下滑关闭

mBottomSheetDialogErr.setCancelable(false); mBottomSheetDialogErr.setCanceledOnTouchOutside(false);

Lee465357793的博客 9671

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

BottomSheetDialog的使用及注意事项

一、BottomSheetDialog简介 用途:底部弹起的view或dialog。 实现:其关键也是CoordinatorLayout与Behavior 要求: 采用View的形式展示的话,用于展示的View必须具备如下两个要求:             1,View类必须支持嵌套滚动。             2,View类必须是CoordinatorLayout

VictorCatFish的博客 9830

【Android】BottomSheetDialog详解

1.简介BottomSheetDialog是一个自定义的从底部滑入的对话框。市面上很多App都有类似的效果,今天我们实现如下效果:2.页面布局从底部弹出view的效果是BottomSheetBehavior来实现的。view必须支持嵌套滚动,而且必须是CoordinatorLayout的直接子类,来看下主题布局。<?xml version="1.0" encoding="utf-8"?> <andr

风吹起如花般细碎流年 1万+

BottomSheetDialog

参考         参考一 基础         底部弹起的view或dialog。其实现关键也是CoordinatorLayout与Behavior。 View形式         view形式的展开是通过BottomSheetBehavior实现的。此时有两个前提:         1,View类必须支持嵌套滚动。         2,View类必须是Coordinator

飞鸟 7945

BottomSheet 的使用介绍(BottomSheetBeahvior,BottomSheetDialog,BottomSheetDialogFragment)

BottomSheet是一种从屏幕底部向上滑出一个对话框的效果,可以用来显示内容或者提供与用户相关的操作,在开发过程中十分常见,Bottom Sheet 具体实现主要包含:BottomSheetBeahvior 、BottomSheetDialog、BottomSheetDialogFragment,这三个组件均可以实现半屏弹出效果,区别点在于接入和使用方式上的差异三个组件的概述。

m0_73986294的博客 4463

BottomSheetDialog的基本使用

最近在开发一个商城的项目,在商品详情内需要弹框选择商品的SKU,如图: 商品图片需要凸出到背景阴影去,于是最新想到使用dialog从底部弹出,选择使用BottomSheetDialog 首先在build.gradle下引入: implementation 'com.android.support:design:26.1.0' 第二:xml布局文件 dialog_goods_sku_l...

学习,思考,输出 2万+

BottomSheetDialog可以拖动的底部对话框

一、效果图,不太清晰 本想一次全部录下来做成 gif 图,可惜高清 gif 图太大了,无法上传,只能换成普清模式,一次录一段,有更好的录制 gif 图的方法可以留言告知。现在只能勉强看看。 二、实现类似抖音拖拽评论框效果 首先布局的最外层要是CoordinatorLayout ,然后对话框的最外层要加上这三个属性: app:behavior_hideable="true" app:behavior_peekHeight="50dp" app:layout_behavior="@string/bottom_s

EleganceKing的博客 1200

BottomSheetDialog里Listview滑动不了的处理办法

通过context获取屏幕的宽和高的方法: DisplayMetrics dm = new DisplayMetrics(); dm = getApplicationContext().getResources().getDisplayMetrics(); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; return new Point(screenWidth ,scree...

qq_29494055的博客 1206
上一篇: Android-数字选择器-自定义多位数选择器-自定义选择器
下一篇: Android 角标 小圆点 右上角显示数字 自定义角度
小狗蛋ing
博客等级 码龄6年 6343粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值