前言

Compose库中是没有原生的类似FlowLayout的布局的

于是我们来自己实现一个FlowLayout

正文

FlowLayout

先看看FlowLayout实现的效果:

代码很简单:

看一下api:

/*** 可以自动换行的线性布局* [modifier]修饰* [orientation]排列的方向,[Orientation.Horizontal]时会先横向排列,一排放不下会换到下一行继续横向排列* [horizontalAlignment]子级在横向上的位置* [verticalAlignment]子级在竖向上的位置* [horizontalMargin]子级与子级在横向上的间距* [verticalMargin]子级与子级在竖向上的间距* [maxLines]最多能放多少行(或列)* [content]compose内容区域*/
@Composable
fun FlowLayout(modifier: Modifier = Modifier,orientation: Orientation = Orientation.Horizontal,horizontalAlignment: Alignment.Horizontal = Alignment.Start,verticalAlignment: Alignment.Vertical = Alignment.Top,horizontalMargin: Dp = 0.dp,verticalMargin: Dp = 0.dp,maxLines: Int = Int.MAX_VALUE,content: @Composable () -> Unit
)

原理:

原理其实和安卓xml布局中的FlowLayout一样,就是测量所有的子项,并根据方向,间距,对齐方式对子项进行测量和放置即可

引入项目

在根项目的build.gradle文件中加入:

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

app的build.gradle中加上,最新版本参考:JitPack | Publish JVM and Android libraries

dependencies{...implementation 'com.github.ltttttttttttt:ComposeViews:1.1.4'
}

然后就可以愉快的使用FlowLayout了

项目已开源,欢迎star:GitHub - ltttttttttttt/ComposeViews

并且项目中不止有FlowLayout,还有更多好用的Compose组件,比如:

ComposePager

Banner

GoodTextField和PasswordTextField

后续还会添加更多的Compose组件

end

Compose中的FlowLayout相关推荐

  1. Jetpack Compose中的Accompanist

    accompanist是Jetpack Compose官方提供的一个辅助工具库,以提供那些在Jetpack Compose sdk中目前还没有的功能API. 权限 依赖配置: repositories ...

  2. 在 Jetpack Compose 中安全地使用数据流

    /   今日科技快讯   / 11月17日下午,暴雪中国官方微博发布公告称,各位暴雪游戏的国服玩家,我们很遗憾地通知大家,随着我们与网之易公司现有授权协议的到期,自2023年1月24日0点起,所有&l ...

  3. Jetpack Compose中的Modifier

    Modifier的基本使用 Modifier修饰符是Jetpack Compose中用来修饰组件的,提供常用的属性,写布局时几乎所有Composable组件的大部分属性都可以用Modifier 来修饰 ...

  4. Jetpack Compose中的手势操作

    点击事件 监听点击事件非常简单,使用 clickable 和 combinedClickable 修饰符即可满足需求: @OptIn(ExperimentalFoundationApi::class) ...

  5. 详解Jetpack Compose中的Modifier修饰符

    前言 本文将会介绍Jetpack Compose中的Modifier.在谷歌官方文档中它的描述是这么一句话:Modifier元素是一个有序.不可变的集合,它可以往Jetpack Compose UI元 ...

  6. Compose 中的附带效应

    关键词 附带效应是指在可组合函数范围之外发生的应用状态变化 效应是一种可组合函数,该函数不会发出界面,并且在组合完成后产生附带效应. 效应名称 作用 用例 LaunchedEffect 在某个可组合项 ...

  7. Jetpack Compose 中使用 Lottie 动画

    从事 Android 开发的 都知道 airbnb 的 Lottie 库,如今它也支持在 Jetpack Compose 中使用了. http://airbnb.io/lottie/#/android ...

  8. Jetpack All In Compose ?看各种Jetpack库在Compose中的使用

    Jeptack Compose 主要目的是提高 UI 层的开发效率,但一个完整项目还少不了逻辑层.数据层的配合.幸好 Jetpack 中不少组件库已经与 Compose 进行了适配,开发者可以使用这些 ...

  9. 42. Compose1.4 如何在Jetpack Compose中为文本应用描边效果(OpenAi翻译)

    探索Jetpack Compose中文本笔画效果的DrawStyle API Jetpack Compose最近为TextStyle增加了很多新的自定义选项,TextStyle.drawStyle就是 ...

最新文章

  1. centos共享linux文件夹权限,CENTOS7 搭建文件服务器:samba共享linux文件夹
  2. shell / 获取当前工作目录的方法
  3. ubuntu下wps不能输入中文
  4. ajax post django,Django中的Ajax POST请求失败
  5. 什么不是预防计算机病毒的方法,预防计算机病毒的方法是什么
  6. FLEX自动完成组件.--AutoSuggest
  7. 最新苹果CMSV10视频电影网站源码+自适应手机版
  8. 范德蒙(Vander Monde)行列式的计算与应用
  9. FAQ:The field file exceeds its maximum permitted size of 1048576 bytes.
  10. 逆元的概念及求解方法
  11. 30 岁转行做程序员是什么样的体验
  12. GBase 8s HAC高可用方案
  13. 模糊系统与神经网络的区别,什么是模糊神经网络
  14. 连接远程计算机输入网络密码错误,电脑远程无法连接常见问题及解决大全
  15. 数据挖掘:数据清洗——数据噪声处理
  16. ubuntu 9.10下的网络电视sopcast的安装及消除播放杂音
  17. python人狗大战游戏_python入门教程NO.10「奇异博士大战灭霸」游戏,面向对象编程实战...
  18. 深入学习OpenCV中图像相似度的算法
  19. 学习雷锋好榜样可是我几乎没有做到
  20. 一条直线平行与斜率方向平移距离d后的坐标

热门文章

  1. 类型转换as和判断is
  2. Android 7.0新特性“Nougat”(牛轧糖)。
  3. 初识贝塞尔(bezier)曲线
  4. 德州仪器TI监控库存抢购锁单操作代码
  5. 路上发现一只被压扁的乌龟,不料竟发生这么诡异一幕
  6. 如何关闭linux系统的53端口,3种关闭linux系统端口方法(示例代码)
  7. Linux权限drwxrwxrwx相关详细说明
  8. python 导入txt文件并删除换行符并提取部分内容———MIMIC-IV/MIMIC-CXR文本报告预处理
  9. 网页制作中如何添加背景图片
  10. 【gitee代码图形化提交(小乌龟)】