文章目录

  • 前言
  • 一、Material-dialogs是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.使用弹窗
  • 总结

前言

这篇文章是对框架Material-dialogs的使用的总结,如果已经熟练使用,那这篇文章对您毫无帮助


提示:以下是本篇文章正文内容,下面案例可供参考

一、Material-dialogs是什么?

Material-dialogs为一个弹窗的框架,帮助我们快速搭建各种弹窗,使用这个框架的理由只有一个,它是kotlin,并且具有高度自定义性,此文章默认读者已经会基本使用kotlin

二、使用步骤

1.引入库

1.导入项目
它有几种弹窗可以分别导入,可根据项目需要导入,最基本的是需要导入下面这个:

implementation 'com.afollestad.material-dialogs:core:3.3.0'

其他还有

  • 带输入文本的弹窗:
implementation 'com.afollestad.material-dialogs:input:3.3.0'//
  • 选择文件的弹窗:
implementation 'com.afollestad.material-dialogs:files:3.3.0'
  • 颜色选择弹窗:
implementation 'com.afollestad.material-dialogs:color:3.3.0'
  • 时间选择弹窗:
implementation 'com.afollestad.material-dialogs:datetime:3.3.0'
  • 底部弹窗:(本文章必定使用)
implementation 'com.afollestad.material-dialogs:bottomsheets:3.3.0'
  • 绑定LifeCycle(本文章必定使用)
implementation 'com.afollestad.material-dialogs:lifecycle:3.3.0'

2.使用弹窗

  • 自定义弹窗(本处为等待框的实现)
    注意看代码,代码中有注释噢~
fun FragmentActivity.showWaitDialog(): MaterialDialog {return MaterialDialog(this).show {customView( //自定义弹窗viewRes = R.layout.base_dialog_wait,//自定义文件dialogWrapContent = true,   //让自定义宽度生效scrollable = true,           //让自定义宽高生效noVerticalPadding = true    //让自定义高度生效)lifecycleOwner(this@showWaitDialog)//绑定生命周期cancelOnTouchOutside(false)   //点击外部不消失}
}

效果:

  • 底部显示的网格式弹窗(需导入底部弹窗)
    注意看代码,代码中有注释噢~
/*** 底部显示的GridLayout* @param list 带图片和文字的BasicGridItem*/
fun FragmentActivity.showBottomGridDialog(list: List<BasicGridItem>,listener: GridItemListener<BasicGridItem>
): MaterialDialog {return MaterialDialog(this, BottomSheet(LayoutMode.WRAP_CONTENT)).show {cornerRadius(res = R.dimen.dp_10)//圆角弧度gridItems(items = list, selection = listener)//子项lifecycleOwner(this@showBottomGridDialog)//绑定生命周期}
}
  • LayoutMode.WRAP_CONTENT:根据加入的list的多少自适应高度,如果不指定,则默认是MATCH_PARENT;
  • 如果item数量一行无法放置,则会自动换行放置
  • 当item被点击时,弹窗会自动消失,如果不需要自动消失,则可以加入noAutoDismiss()

调用:

    override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val items = arrayListOf(BasicGridItem(R.drawable.image_empty, "第一个"),//图片,文本BasicGridItem(R.drawable.image_empty, "第二个"),BasicGridItem(R.drawable.image_empty, "第三个"))showBottomGridDialog(items) { dialog, index, item ->kotlin.run {//执行点击后的逻辑处理}}}

效果:

  • 底部显示列表的弹窗
fun FragmentActivity.showBottomListDialog(items: List<String>,listener: ItemListener
): MaterialDialog {return MaterialDialog(this, BottomSheet(LayoutMode.WRAP_CONTENT)).show {listItems(items = items, selection = listener)lifecycleOwner(this@showBottomListDialog)}
}

调用:

      showBottomListDialog(arrayListOf("第一个", "第二个")) { dialog, index, text ->kotlin.run {ToastUtils.showShort(text[0].toString())}}
  • 如果列表内数据过多,则默认可以滑动

效果:

  • 自定义Adapter
    注意看代码,代码中有注释噢~
fun FragmentActivity.showCustomBottomListDialog(adapter: RecyclerView.Adapter<*>): MaterialDialog {return MaterialDialog(this, BottomSheet(LayoutMode.WRAP_CONTENT)).show {cornerRadius(res = R.dimen.dp_20)//背景框的圆角弧度 customListAdapter(adapter)//自定义的适配器,默认为垂直的列表//也可以为gridlayout的效果//customListAdapter(adapter, GridLayoutManager(this@showCustomBottomListDialog, 3))lifecycleOwner(this@showCustomBottomListDialog)//绑定生命周期}
}

调用:

  lateinit var dialog: MaterialDialogoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)dialog = showCustomBottomListDialog(CustomAdapter())}//自定义Adapter,这个大家都懂,我就不注释啦inner class CustomAdapter : RecyclerView.Adapter<CustomAdapter.ViewHolder>() {inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {val binding: BaseDialogWaitBinding? = DataBindingUtil.bind(itemView)}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {return ViewHolder(DataBindingUtil.inflate<BaseDialogWaitBinding>(LayoutInflater.from(parent.context), R.layout.base_dialog_wait, parent, false).root)}override fun onBindViewHolder(holder: ViewHolder, position: Int) {holder.binding?.text?.text = "第${position}个"holder.binding?.executePendingBindings()holder.binding?.root?.setOnClickListener {dialog.dismiss()}}override fun getItemCount(): Int {return 10}}

垂直效果:

网格效果:

  • 设置颜色
 <style name="customDialogBg"><!--        背景颜色--><item name="md_background_color">#000000</item><!--        点击时的涟漪颜色--><item name="md_ripple_color">#000000</item><!--        标题字体颜色--><item name="md_color_title">#998899</item><!--        内容字体颜色--><item name="md_color_content">#873187</item><!--        按钮字体颜色--><item name="md_color_button_text">#270E27</item></style>
MaterialDialog(this).show {.....setTheme(R.style.customDialogBg).....}

总结

提示:时间有限,本文章没有涵盖到所有的用法,读者需举一反三用于自己的项目噢,更多用法需要根据自己需要自行探索噢,附上github传送门

Android Material-dialogs的使用(kotlin)相关推荐

  1. Android Material Design按钮样式设计

    Today we'll dive deep into Android Buttons in Material Design and develop an application that showca ...

  2. Android Material Components – MaterialAlertDialog

    Material Design 2.0 is out and we can't wait to get our hands on Dialogs. In this tutorial, we'll be ...

  3. Material Dialogs库的使用

    Material Dialogs 查看全文 http://www.taodudu.cc/news/show-4259806.html 相关文章: 芯片的IR drop是什么 神经网络编译器图层面IR ...

  4. Android Material Design按钮样式

    本文翻译自:Android Material Design Button Styles I'm confused on button styles for material design. 我对材质设 ...

  5. Android Material Design :LinearLayoutCompat添加分割线divider

     Android Material Design :LinearLayoutCompat添加分割线divider Android Material Design 扩展支持包中的LinearLayo ...

  6. Android Material风格的应用(三)--DrawerLayout

    添加抽屉导航 Android Material风格的应用(一)--AppBar TabLayout Android Material风格的应用(二)--RecyclerView Android Mat ...

  7. Android Material Design TabLayout属性app:tabMode和app: tabGravity

    Android Material Design TabLayout属性app:tabMode和app: tabGravity Android Material Design 中的TabLayout有两 ...

  8. android夜间模式揭露动画,Android Material Design系列之夜间模式

    今天我们讲讲夜间模式的实现,这篇文章的名字应该叫:<Android Material Design系列之夜间模式>.在Android 5.0 之后,实现夜间模式并非很难了,支持的5.0库提 ...

  9. android material 颜色值,Android Material Colors 谷歌 Material Design 标准颜色

    Android Material Colors 谷歌 Material Design 标准颜色. 调色板资源文件通过 doc-getter 自动抓取生成. 运行 Demo 来查看效果. Usage G ...

  10. Android Material文本字段

    In this tutorial, we'll implement Text Fields using the new Material Design Components Library. We h ...

最新文章

  1. 微信小程序点餐+SpringBoot(包括后台)
  2. 关闭windows窗口时操作
  3. 交换esc和左ctrl ;caps lock与右ctrl
  4. 【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )
  5. go build和go install的区别
  6. C语言实现并查集(Disjoint set或者Union-find set)(附完整源码)
  7. 深度学习数据自动编码器_如何学习数据科学编码
  8. C加加学习之路 1——开始
  9. javascript 以“年-月-日 时:分:秒”格式显示当前时间
  10. 短短几分钟快速带你掌握C语言指南针!
  11. 复合视频信号CVBS解析
  12. 六,华为交换路由做NAT五种方法
  13. 三角函数及其之间的关系
  14. 中国银行软件中心信息技术岗(北京 )面试
  15. TikTok三大流行趋势 钛动带你看懂TikTok
  16. 北大计算机专硕学费,北京大学专业硕士学费被曝高达2.2万元/年
  17. CloudBu面试题
  18. 秀一段《易语言》的源代码
  19. matlab为什么生成obj文件,为文件输入和输出创建新的 System object
  20. sub html编辑器,目前前端开发必备编辑器有哪几款呢?

热门文章

  1. 阿里P7级别面试经验总结,完整版开放下载
  2. 物联网开发 无线433MHz安防报警系统 上
  3. SQL2012数据库还原数据的时候提示: 还原数据库时失败解决方案
  4. qemu指定CPU型号
  5. Google Earth Engine APPS(GEE)——使用 AREA2 和 CODED 估算森林砍伐和退化面积巴西森林砍伐案例总览
  6. Schema hasn‘t been registered for model 解决方案
  7. 联想全球裁员 MOTO移动业务被砍掉超过一半
  8. 2021年6月1日大学化学无机原理(12)——第六章四个量子数、多电子的核外排布。
  9. 补充STM32 PWM占空比,频率的计算及输入捕获细节到STM32库函数的掌握方法
  10. Google浏览器删除的书签怎么恢复?