BottomSheetFragment自定义高度及取消拖拽实践

一、需求

直接上图


pic-1
pic-2

点击图一:“已选”,然后弹出图二底部弹窗。

底部弹窗的效果实现的方式有很多种,例如:popupwindow、dialog、activity等等,今天我们这边使用的是BottomSheetDialog,了解BottomSheetDialog的都知道高度是自适应内容的,并且可以进行拖拽。

那么,假如需求规定需要【固定高度】,并且【不能拖拽】呢?应该如何实现呢?

二、固定高度及禁止拖拽

1、继承BottomSheetDialogFragment

2、在onCreateDialog方法中拿到Dialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);

3、//重置高度 if (dialog != null) { View bottomSheet = dialog.findViewById(R.id.design_bottom_sheet); bottomSheet.getLayoutParams().height = ScreenUtils.getScreenHeight() * 2 / 3; }

4、//禁止拖拽BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { //禁止拖拽, if (newState == BottomSheetBehavior.STATE_DRAGGING) { //设置为收缩状态 mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { } };

记住:如果滚动使用Recycleview,请设置recyclerView.setNestedScrollingEnabled(false);

三、完整代码

https://github.com/xmutzlq/BottomSheetDemo/blob/master/README.md

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,511评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • 家乡是一个人烟稀少的小镇,但是还是收拢了很多的住宅地,人们为了自己的生活各自的忙碌着,低头着、抬头着。在一个...
    无形暗地阅读 156评论 0 2
  • 该工具主要用来快捷的控制场景中多个物体的显示与隐藏。效果如下:首先在Hierarchy视图框中右键创建“显示隐藏管...
    循环渐进123456阅读 909评论 0 0
  • 上一章 晚上下班回来的罗慧敏和张诚得知陆亦凡要离开时,也是同样地不舍,虽然大家在一起短短两三天,但感情还是蛮深的,...
    狐狸九阅读 439评论 0 2