项目中需要用到流式布局,防止国际化后内容超出屏幕,想到了第三方的一些控件比如

FlowLayout,之前也用过比较熟悉,但是之前学习了ConstraintLayout 这个强大控件库,留意到其中有一个控件:Flow也比较适合当成流式布局使用,有官方的干嘛要用第三方,研究搞起!使用心得总结一下,希望对您有帮助

Flow管理的view 自身可以不设置layout_constraintStart_toEndOf 等位置
需要width="0dp" app:layout_constraintWidth_default="wrap"
如果是Textview最好设置 android:singleLine="true"
Flow其他属性具体如下:
<androidx.constraintlayout.helper.widget.Flowandroid:id="@+id/flow"//宽度要指定,否则会顶出屏幕外面android:layout_width="0dp" android:layout_height="wrap_content"android:layout_marginStart="10dp"android:layout_marginEnd="10dp"//引用的id(内部的view的id)app:constraint_referenced_ids="tv_type,tv_online_state,tv_switch_state"//chain或者aligned,chain:链形式,依次挨着排,aligned会两端对齐app:flow_wrapMode="chain" //首行的对齐方式,packed:靠最左侧挨着排,水平间隔:horizontalGap生效, // spread:分散对齐,两端不贴边。spread_inside:分散对齐,两头贴边app:flow_firstHorizontalStyle="packed"//最后一行的对齐方式,其他属性参考firstHorizontalStyleapp:flow_lastHorizontalStyle="packed"// 全局水平bias,为0时,每行都贴左边,可解决中间行单独占一行时,不贴最左侧的问题app:flow_horizontalBias="0"// 第一行水平bias,为0时,贴最左边app:flow_firstHorizontalBias="0"// 最后一行水平bias,为0时,贴最左边app:flow_lastHorizontalBias="0"// 控件水平方向上的间隔app:flow_horizontalGap="10dp"// 行间隔app:flow_verticalGap="8dp"app:layout_constraintEnd_toStartOf="@id/ibt_go"app:layout_constraintStart_toEndOf="@id/guideline"app:layout_constraintTop_toTopOf="@id/tv_org_name" />

list的item完整xml布局 如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"><Viewandroid:id="@+id/top_margin"android:layout_width="match_parent"android:layout_height="8dp"app:layout_constraintTop_toTopOf="parent" /><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/container"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/colorWhite"android:paddingHorizontal="12dp"android:paddingVertical="16dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/top_margin"><TextViewandroid:id="@+id/tv_device_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginRight="70dp"android:ellipsize="end"android:maxLines="1"android:textColor="@color/colorTextNormal"android:textSize="15sp"android:textStyle="bold"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"tools:text="测试测试" /><TextViewandroid:id="@+id/tv_org_name"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="16dp"android:textColor="@color/colorTextLightBalck"android:textSize="14sp"app:layout_constraintEnd_toStartOf="@id/guideline"app:layout_constraintHorizontal_bias="0"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/tv_device_name"app:layout_constraintWidth_default="wrap"tools:text="研发部dadfad打发士大夫打发范德萨" /><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"app:layout_constraintGuide_percent="0.3" /><androidx.constraintlayout.helper.widget.Flowandroid:id="@+id/flow"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="5dp"android:layout_marginEnd="5dp"app:constraint_referenced_ids="tv_type,tv_online_state,tv_switch_state"app:flow_firstHorizontalBias="0"app:flow_firstHorizontalStyle="packed"app:flow_horizontalBias="0"app:flow_horizontalGap="10dp"app:flow_lastHorizontalBias="0"app:flow_lastHorizontalStyle="packed"app:flow_verticalGap="8dp"app:flow_wrapMode="chain"app:layout_constraintEnd_toStartOf="@id/ibt_go"app:layout_constraintStart_toEndOf="@id/guideline"app:layout_constraintTop_toTopOf="@id/tv_org_name" /><TextViewandroid:id="@+id/tv_type"android:layout_width="0dp"android:layout_height="wrap_content"android:background="@drawable/selector_enable_text_bg_blue_gray"android:paddingHorizontal="8.5dp"android:paddingVertical="3dp"android:singleLine="true"android:textColor="@drawable/selector_enable_textcolor_blue_gray"android:textSize="12sp"app:layout_constraintWidth_default="wrap"tools:text="自动采集" /><TextViewandroid:id="@+id/tv_online_state"android:layout_width="0dp"android:layout_height="wrap_content"android:background="@drawable/selector_enable_text_bg_green_red"android:paddingHorizontal="8.5dp"android:paddingVertical="3dp"android:singleLine="true"android:textColor="@drawable/selector_enable_textcolor_green_red"android:textSize="12sp"app:layout_constraintWidth_default="wrap"tools:text="在线" /><TextViewandroid:id="@+id/tv_switch_state"android:layout_width="0dp"android:layout_height="wrap_content"android:background="@drawable/selector_enable_text_bg_green_red"android:paddingHorizontal="8.5dp"android:paddingVertical="3dp"android:singleLine="true"android:textColor="@drawable/selector_enable_textcolor_green_red"android:textSize="12sp"app:layout_constraintWidth_default="wrap"tools:text="合位" /><androidx.appcompat.widget.AppCompatImageButtonandroid:id="@+id/ibt_go"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@android:color/transparent"android:src="@mipmap/ic_arrow_right"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

最终效果:

中文列表item:

英文列表item:

ConstraintLayout 流式布局:Flow的用法相关推荐

  1. flutter圆形动画菜单,Flow流式布局动画圆形菜单

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 重要消息 flutter中网络请求dio使用分析 视频教程在这里 Flutter 从入门实践到开发一个APP之UI基础 ...

  2. 第 2-3 课:流式布局组件详解(Flow、Wrap)

    这节课将继续讲解 Flutter 的常用组件中的布局使用的组件,本节课主要讲解 Flutter 里的流式布局(或者瀑布)组件的用法.在 Flutter 中主要通过 Flow 和 Wrap 组件来实现流 ...

  3. ConstraintLayout的流式布局

    Flow流式布局 流式布局的实现方式有很多种,比如RecycleView的StaggeredGridLayoutManager,或者自定义布局动态计算的方式等,无论哪种实现,都不如Constraint ...

  4. Flutter: 弹性布局Flex(Expanded)、流式布局Wrap、Flow

    用Android原生实现流式布局[实现例如app的很多标签]需要自定义View继承自ViewGroup,然后代码量也不小. 相关自定义View实现流式布局,请参考这位老兄的博客: https://bl ...

  5. 46、Flutter之 布局组件 流式布局Wrap,Flow

    Row 和 Colum 如果子 widget 超出屏幕范围,则会报溢出错误,如: Row(children: <Widget>[Text("xxx"*100)], ); ...

  6. Flutter 流式布局、自动换行(Wrap、Flow)

    文章目录 流式布局 Wrap Flow 流式布局 流式布局在移动端是非常常见的,比如商品列表,瀑布流.标签页等等.使用Android原生来实现流式布局还是有点麻烦的,甚至需要自定义view或者使用第三 ...

  7. Android流式布局FlowLayout,一款针对Tag的布局

    交流群 : 668524118 本群主要用于编程技术 ,及创意作品 ,思维架构的交流 ,欢迎喜欢创新 ,热爱生活的朋友加入 ! 前言 flow layout, 流式布局, 这个概念在移动端或者前端开发 ...

  8. 仿唯品会/京东/淘宝搜索流式布局的隐藏与展示

    1. 项目需求: 如下,如果没有向下箭头(显示/隐藏剩余搜索词条)的话,采用flexbox-layout+Recycleview+FlexboxLayoutManager 可以实现流式布局. 加了这个 ...

  9. Android 自动换行流式布局的RadioGroup

    用法 使用FlowRadioGroup代替RadioGroup import android.content.Context; import android.util.AttributeSet; im ...

最新文章

  1. 程序员跳槽全攻略——读书笔记
  2. 个人站立会议(11月24日)
  3. Verdi-ug --- nwave Tutorial
  4. SpringMVC+Spring+mybatis项目搭建详细过程
  5. Class文件结构amp;字节码指令
  6. 二次元带音乐404源码
  7. 云原生2.0时代下,DevOps实践如何才能更加高效敏捷?
  8. centos7.5下yum安装mysql-5.6.43
  9. Centos7 设置静态IP后重启网络服务出错
  10. Nik Collection 4 for Mac可独立使用的ps滤镜工具
  11. view 判断显示 微信_微信小程序WXML页面常用语法(讲解+示例)
  12. 影集电子相册制作系统普及版 39.9.7已注册版
  13. 支付宝扫码枪收银的实现原理你了解吗?
  14. 三、REPL(交互式解释器)
  15. 原神一面:Java 泛型中的通配符 T,E,K,V,?,你确定都了解吗?
  16. JPA学习笔记1——JPA基础
  17. 谷歌翻译转换html,HTML – 谷歌翻译网站
  18. 读取BIL格式高光谱数据——C/C++
  19. 第八章 USB 设备驱动移植
  20. 【Kotlin 协程】Flow 异步流 ② ( 使用 Flow 异步流持续获取不同返回值 | Flow 异步流获取返回值方式与其它方式对比 | 在 Android 中使用 Flow 异步流下载文件 )

热门文章

  1. JavaScript-高级(学习笔记)
  2. jquery组织结构图插件 (基于jit-yc 做可拖动、自适应伸缩的orgchart)
  3. Java之-springboot
  4. LabVIEW的for循环事例
  5. 数据结构和算法(五)--栈(Stack)
  6. 北京工业大学微机原理和c语言,北京工业大学 微机原理 实验九
  7. Licode—基于webrtc的SFU/MCU实现
  8. Python中英文翻译工具
  9. 未来计算机技术的发展趋势有哪些,从计算机的发展趋势来看,未来的计算机将会有哪些新技术?...
  10. MacOS下在Pycharm中配置Pyqt5工具(2023年新版教程)