BottomSheetDialogFragment继承于BottomSheetDialog,一个Dialog形式的framgnet,可实现拖动打开及关闭,通过查看源码,发现在其内部是创建了一个BottomSheetDialog的,而BottomSheetDialog则继承于DialogFragment。归根结底就是一个Dialog,只是在其基础上进行了加强。费话不多说,先上图:

要实现这个效果,需要重写三个方法:
1、重写onCreateDialog()

    @NonNull@Overridepublic Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {//返回BottomSheetDialog的实例return new BottomSheetDialog(getContext());}

2、重写onCreateView()

    @Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup   container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.dialog_goods_sku_layout, container, false);initView(view);return view;}

3、重写onStart()

    @Overridepublic void onStart() {super.onStart();//获取dialog对象BottomSheetDialog dialog = (BottomSheetDialog) getDialog();//把windowsd的默认背景颜色去掉,不然圆角显示不见dialog.getWindow().findViewById(R.id.design_bottom_sheet).setBackgroundColor(Color.TRANSPARENT);//dialog.getWindow().findViewById(R.id.design_bottom_sheet).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//获取diglog的根部局FrameLayout bottomSheet = dialog.getDelegate().findViewById(R.id.design_bottom_sheet);if (bottomSheet != null) {//获取根部局的LayoutParams对象CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) bottomSheet.getLayoutParams();//layoutParams.height = getPeekHeight();//修改弹窗的最大高度,不允许上滑(默认可以上滑)bottomSheet.setLayoutParams(layoutParams);final BottomSheetBehavior<FrameLayout> behavior = BottomSheetBehavior.from(bottomSheet);//peekHeight即弹窗的最大高度//behavior.setPeekHeight(getPeekHeight());// 初始为展开状态behavior.setState(BottomSheetBehavior.STATE_EXPANDED);/*ImageView mReBack = view.findViewById(R.id.re_back_img);//设置监听mReBack.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//关闭弹窗behavior.setState(BottomSheetBehavior.STATE_HIDDEN);}});*/}}

XML布局源码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="wrap_content"><RelativeLayoutandroid:id="@+id/dialog_top_layout"android:layout_width="match_parent"android:layout_height="90dp"android:elevation="1dp"tools:ignore="UnusedAttribute"><FrameLayoutandroid:layout_width="match_parent"android:layout_height="75dp"android:layout_alignParentBottom="true"android:background="@color/colorWhite"android:paddingLeft="120dp"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom"android:orientation="vertical"android:paddingBottom="5dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="商品名称"android:textColor="#3F51B5"android:textSize="18sp" /><TextViewandroid:id="@+id/dialog_tv_total_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="¥88.88"android:textColor="#FF5722"android:textSize="16sp"android:textStyle="bold"tools:ignore="HardcodedText,TextViewEdits" /><TextViewandroid:id="@+id/dialog_tv_goods_no"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="商品编码:888888"android:textColor="#999999"android:visibility="visible"tools:ignore="HardcodedText" /></LinearLayout></FrameLayout><androidx.cardview.widget.CardViewandroid:id="@+id/dialog_cardView"android:layout_width="90dp"android:layout_height="90dp"android:layout_marginLeft="20dp"android:layout_marginRight="14dp"android:layout_marginBottom="5dp"app:cardBackgroundColor="@color/colorWhite"app:cardCornerRadius="6dp"app:cardElevation="2dp"><ImageViewandroid:id="@+id/dialog_iv_goods"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="centerCrop"android:src="@mipmap/ic_launcher"tools:ignore="ContentDescription" /></androidx.cardview.widget.CardView></RelativeLayout><androidx.core.widget.NestedScrollViewandroid:id="@+id/bottomSheetDialog_NestedScrollView"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/dialog_top_layout"android:background="@color/colorWhite"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginStart="14dp"android:layout_marginTop="10dp"android:layout_marginEnd="14dp"android:layout_marginBottom="10dp"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="300dp"android:text="其它内容填充区域"android:textSize="24sp"android:gravity="center"android:background="#C6DEE3" /></LinearLayout></androidx.core.widget.NestedScrollView><LinearLayoutandroid:id="@+id/dialog_bottom_layout"android:layout_width="match_parent"android:layout_height="50dp"android:layout_below="@+id/bottomSheetDialog_NestedScrollView"android:orientation="horizontal"><TextViewandroid:id="@+id/dialog_add_shopping_sku"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:alpha="0.8"android:background="@color/colorAccent"android:gravity="center"android:text="加入购物车"android:textColor="@color/colorWhite"android:textSize="20dp"tools:ignore="HardcodedText" /><TextViewandroid:id="@+id/dialog_orders_sku"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:background="@color/colorPrimary"android:gravity="center"android:text="立即购买"android:textColor="@color/colorWhite"android:textSize="20dp"tools:ignore="HardcodedText" /></LinearLayout></RelativeLayout>

源码详见:AndroidUI仿商城APP中的购买商品时,从底部弹出的窗口展示商品属性_android凸出-Android文档类资源-CSDN下载

使用BottomSheetDialogFragment实现购买出商品,底部弹出商品属性的效果相关推荐

  1. android+底部评论框,Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)...

    实现的效果图: 自定义Fragment继承BottomSheetDialogFragment 重写它的三个方法: onCreateDialog() onCreateView() onStart() 他 ...

  2. 个人中心 (二) 01-编辑资料-基础布局-Popup弹出层-底部弹出-头像男女时间 DatetimePicker时间选择转换-dayjs(value).format('YYYY-MM-DD')

    个人中心-编辑资料-基础布局-Popup 弹出层-底部弹出模式-头像-男女-时间 & DatetimePicker 时间选择-年月日模式 & dayjs(value) 转换成日期对象, ...

  3. 微信小程序商品详情页底部弹出框(点击加入购物车或立即购买弹出)

    项目实现效果如图 项目效果实现思路: wxml页面设计好底部栏<加入购物车,立即购买> 绑定点击触发弹出层函数 写好弹出窗效果 写好原始页面暗化效果 项目实现代码 1.wxml代码 (其中 ...

  4. Android中BottomSheetDialog使用方法(底部弹出的Dialog)

    大家都知道IOS的很多菜单都是从底部弹出的,这种展示方式还是很好看的,而丑爆的Android默认弹框一直都是大家一定要摒弃的,那么我们Android如何做出相应效果的弹框.下面我们就介绍这种做法. 底 ...

  5. 仿抖音评论底部弹出框(列表框+发表框)

    BottomSheetDialogFragment高仿抖音评论底部弹出框 先看效果图: 这个弹窗的效果是使用BottomSheetDialogFragment做的,第一个弹出的对话框为CommentL ...

  6. 【微信小程序封装底部弹出框二】

    [微信小程序封装底部弹出框二] <!--index.wxml--> <view><button style="margin-top: 300px;" ...

  7. Android仿IOS封装通用的弹出框Dialog和底部弹出列表选择框 仿美团顶部条件筛选框 附自定义ViewGroup

    弹出框 背景 提示与询问弹出框 实现 使用 列表选择框 实现 使用 顶部条件筛选框 实现 自定义ViewGroup 使用 总结 背景 鉴于Android提供的默认弹出框很一般,IOS的弹出框样式还不错 ...

  8. 微信小程序 -- 自定义底部弹出框(带动画--滑入滑出)

    实现这么一个功能,点击选项进行选择,效果是从底部弹出选项框(带滑出动画),选择了某项或者点击其他地方,隐藏(带滑出动画).效果图如下: 可适用于任何场景,如普通选项(如图)或者类似商城小程序选择商品属 ...

  9. 【Android】Activity和PopupWindow都实现从底部弹出或滑出选择菜单或窗口

    使用Activity和PopupWindow都实现从底部弹出或滑出选择菜单或窗口 [Android]测试与popwindow PopupWindow转载自:Android PopupWindow实现从 ...

最新文章

  1. Flameshot:Linux 环境下的一个简洁但功能丰富的截图工具
  2. pfSense如何创建和配置VLAN
  3. 一句话理解tf.identity的含义
  4. 提高Java架构师和程序员效率的10个工具
  5. react发送和接收请求_React行为编程简介:请求,等待和阻止
  6. ajax 请求svg,jQuery append 到AJAX加载的SVG问题
  7. 推荐模型之:跨会话信息感知的推荐模型探索与实践
  8. Springboot+ Mybatis搭建学习
  9. 绘制永磁同步电机定子绕组示意图——Visio制图总结【电控类】(一)
  10. 初识python评课稿_六年级语文《手指》听课记录评课稿资料
  11. aplay 源码分析
  12. 【计算机组成原理】二、静态随机存储器实验
  13. 众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3
  14. 基于C/C++获取电脑网卡的IP地址信息
  15. 【cocos2dx】卡牌记忆游戏(2)——游戏场景
  16. 视频知识点(17)- flv.js 实现播放本地视频文件的技巧
  17. C语言的语句与程序的基本结构
  18. 生产工单收货控制增强
  19. 【高等数学】求空间直角坐标系中一点到一平面的投影
  20. 安卓Android调用C语言实现其他进程应用app的内存变量读取修改与利用BusyBox实现应用暂停和恢复(Native层)

热门文章

  1. JavaScript实现的放大镜放大图片效果
  2. 这个高仿微信,差点我就信了
  3. 老毛桃制作winPE镜像
  4. Unity3D-摄像机详解
  5. JSR303校验的简单使用以及自定义校验规则的代码编写
  6. 运维快速入门必备的 Linux 服务器安全简明指南,速收!
  7. centos 虚拟机输入大小写混乱问题
  8. liunx+python+django框架实现图片生成二维码
  9. Mapwingis添加图层,实现label
  10. 2018年买华硕笔记本 安装 Fedora 28,pcieport errors flood the journal