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. netperf -R用法
  2. Android学习笔记(三):android画图之paint
  3. python-os创建文件夹-create_dir_if_not_exist.py
  4. access无法与wincc链接_wincc和Access连接写如变量
  5. 5.6.50 mysql 用什么驱动_日均5亿查询量的京东订单中心,为什么舍弃MySQL用ES?
  6. socket网络编程ftp
  7. [paper reading] GoogLeNet
  8. iOS 4中禁止程序退出后保留在后台的方法
  9. arm linux logrotate,交叉编译zlog日志工具:zlog+cronolog+crontab+logrotate
  10. 凸多边形、凹多边形、凸包算法
  11. 使用ffmpeg转码MP4至m3u8格式并切片,以及自动检测切片m3u8脚本编写
  12. 保姆级教程:NobePay从注册到充值开卡全过程
  13. 【练习】星巴克介绍页面
  14. html svg波浪,CSS实现svg图片水纹波浪流动效果
  15. vue table自定义样式
  16. redis 基础教程
  17. pandas中的dropna()方法解析
  18. 自动控制理论基本概念
  19. 计算机视觉之目标检测与轨迹追踪
  20. 【Python3】中str方法汇总

热门文章

  1. 【计算机导论调研报告】计算机从业人员的职业道德
  2. noseunittestpytest
  3. 业务分析系列主题:做设计时,怎样理解和构建业务场景闭环?
  4. 计算机自带的加密,加密,详细教您如何用自带Bitlocker来为电脑磁盘加密
  5. 互联网“香饽饽”?数据挖掘或成热门行业
  6. JSR303校验使用
  7. C#语言实例源码系列-实现XML文件操作
  8. 华为敏捷/DevOps实践:如何开好站立会议
  9. IEEE 802.3标准就是ISO 802.3标准
  10. html中页码居中,如何把Word2007的页脚设置为页码并居中?