自定义 ViewGroup,实现多功能流式布局与网格布局
AutoFlowLayout
项目地址:LRH1993/AutoFlowLayout
简介:自定义 ViewGroup,实现多功能流式布局与网格布局
更多:作者 提 Bug 官网
标签:
流式布局-
一、AutoFlowLayout 应用场景
流式布局,在很多标签类的场景中可以用的;而网格布局在分类中以及自拍九宫格等场景很常见。如下所示: 如此使用频繁而又实现简单的控件,怎能不自己撸一个呢?控件,还是定制的好啊。
二、AutoFlowLayout 实现效果
先介绍下自己撸的这个控件的功能及效果。
1.功能
流式布局
- 自动换行
- 行数自定:单行/多行
- 支持单选/多选
- 支持行居中/靠左显示
- 支持添加/删除子 View
- 支持子 View 点击/长按事件
网格布局
- 行数/列数自定
- 支持单选/多选
- 支持添加/删除子 View
- 支持子 View 点击/长按事件
- 支持添加多样式分割线及横竖间隔
2.效果
下面以 gif 图的形式展现下实现的效果,样式简单了些,不过依然能展示出这个简单控件的多功能实用性。
流式布局
网格布局
最后一个是带间隔以及分割线的,由于录屏原因,只在跳过去的一瞬间显示了粉红色的一条线。真实如下图所示,可以定义横竖间距的大小,以及分割线的颜色,宽度。
三、AutoFlowLayout 使用
1.添加依赖
①.在项目的 build.gradle 文件中添加
allprojects {repositories {...maven { url 'https://jitpack.io' }}}
②.在 module 的 build.gradle 文件中添加依赖
dependencies {compile 'com.github.LRH1993:AutoFlowLayout:1.0.5'}
2.属性说明
下表是自定义的属性说明,可在 xml 中声明,同时有对应的 get/set 方法,可在代码中动态添加。
3.使用示例
布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><com.example.library.AutoFlowLayoutandroid:id="@+id/afl_cotent"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</RelativeLayout>
代码设置数据
mFlowLayout.setAdapter(new FlowAdapter(Arrays.asList(mData)) {@Overridepublic View getView(int position) {View item = mLayoutInflater.inflate(R.layout.special_item, null);TextView tvAttrTag = (TextView) item.findViewById(R.id.tv_attr_tag);tvAttrTag.setText(mData[position]);return item;}});
与 ListView,GridView 使用方式一样,实现 FlowAdapter 即可。
自定义 ViewGroup,实现多功能流式布局与网格布局相关推荐
- Android布局——线性布局、相对布局、帧布局、表格布局、网格布局、约束布局
1.概述 1.1 布局的作用:布局是对界面结构的全面规划和安排,通过api中提供的各种布局能够快速的完成对界面的设计和规划 1.2 布局的种类:线性布局(LinearLayout).相对布局(Rela ...
- Web前端开发之CSS学习笔记10—栅格布局(网格布局)
目录 [网格布局grid] 1.网格布局的构成 2.父容器grid container 3.生成网格容器 display:grid/inline-grid 4.构建网格 grid-template-c ...
- 【第八篇】CSS布局之网格布局
一个网页根据其各个功能块的分布,通常将其分成多个组成部分.同时为了页面美观,通常将各个功能模块放在页面固定的地方.CSS中存在多种布局方法,例如浮动,弹性和网格布局.每种布局都有其适用的范围. 网格布 ...
- CSS3:动画、flexbox、响应式设计、网格布局
自学前端的学习笔记,参考的教程是W3Cschool,写给自己看的,很主观 这里是我一边自学一边写的个人主页,2-3天更新一次,欢迎围观:Your Ideal World CSS3 一.边框.渐变与字体 ...
- 流式布局java_Java_流式布局、边框布局以及网格布局
功能简介: 简单使用流式.边框以及网格布局:效果图: =>StuInfoAdd.java package ui.stuinfo; import java.awt.BorderLayout; im ...
- CSS 布局 - grid - 二维布局方法 - 网格布局
目录 一.grid 二维布局模块 二.基本概念 理解逻辑 - 容器 - 项目 理解行列 - 二维布局 理解单元格 网格线 三.容器属性 使用方法 CSS 重要属性配置 grid-template-co ...
- css 网格布局_CSS网格布局三年
css 网格布局 As I was updating my slides for An Event Apart in San Francisco, I realised how much comple ...
- css 网格布局_CSS网格布局:解决装订线问题
css 网格布局 In my recent conference presentations on the emerging CSS Grid Layout specification I've po ...
- css 网格布局_CSS网格布局
css 网格布局 网格布局 (Grid Layout) CSS Grid Layout, simply known as Grid, is a layout scheme that is the ne ...
最新文章
- mybatis学习教程(二)初级的增、删、查、改
- 机器学习算法——K近邻法
- JAVA无法加载此类文件,ORA-00376: 此时无法读取文件问题处理
- Python面试题之如何用Python来发送邮件?
- Windows 10 之修改登录背景(Win10BGChanger)
- win11没有hyper-v
- bzoj1061 志愿者招募
- TideSec远控免杀学习四(BackDoor-Factory+Avet+TheFatRat)
- spark python编程 林子雨_林子雨-Spark编程基础Python版-厦门大学数据库室.ppt
- 热敏电阻温度计算 公式 程序
- 揭秘!用Python做副业躺赚的4个大招
- 20220518 十堂课教会管理者打胜仗———管理者如何快速上手,带领团队打胜仗?
- typescript入门之:如何使用、不限定函数参数的个数传参、interface约束(对象、函数、数组、类)、定义可选参数
- Pinbox 使用快捷键打开网页
- 电脑培训中心是“培”训还是“被”训
- pandas使用query函数查询dataframe中某一个数据列在指定数据范围的数据行(rows where value is between two values in dataframe)
- 安全基础--1--计算机网络基本概念
- 模拟【The Biggest Water Problem】+模拟【明明的随机数】
- virgo极简虚拟桌面 1.4.2 上班族必备
- 克里金插值(Kriging)在MATLAB中的实现(克里金工具箱)