没有合适的资源?快使用搜索试试~ 我知道了~
本文实例为大家分享了Android FlowLayout流式布局的具体代码,供大家参考,具体内容如下 最近使用APP的时候经常看到有 这种流式布局 ,今天我就跟大家一起来动手撸一个这种自定义控件. 首先说一下自定义控件的流程: 自定义控件一般要么继承View要么继承ViewGroup View的自定义流程: 继承一个View–>重写onMeasure方法–>重写onDraw方法–>定义自定义属性–>处理手势操作 ViewGroup的自定义流程: 继承一个ViewGroup–>重写onMeasure方法–>重写onLayout–>重写onDraw方法->定义自定义属性–>处理手势操作 我们可以 在Android开发中,流式布局(FlowLayout)是一种常见的布局方式,它允许子视图(views)按照特定的方向(通常是水平或垂直)排列,当一行或一列填满时自动换行。这种布局非常适合用于创建类似网格或者卡片视图的效果,如在电商应用的商品列表展示中。下面将详细讲解如何实现一个自定义的Android FlowLayout。 自定义一个FlowLayout类,让它继承自ViewGroup。这是因为我们需要控制子视图的布局和排列,这在ViewGroup中才能实现。FlowLayou
资源详情
资源评论
资源推荐
Android FlowLayout流式布局实现详解流式布局实现详解
本文实例为大家分享了Android FlowLayout流式布局的具体代码,供大家参考,具体内容如下
最近使用APP的时候经常看到有
这种流式布局 ,今天我就跟大家一起来动手撸一个这种自定义控件.
首先说一下自定义控件的流程自定义控件的流程:
自定义控件一般要么继承View要么继承ViewGroup
View的自定义流程的自定义流程:
继承一个View–>重写onMeasure方法–>重写onDraw方法–>定义自定义属性–>处理手势操作
ViewGroup的自定义流程的自定义流程:
继承一个ViewGroup–>重写onMeasure方法–>重写onLayout–>重写onDraw方法->定义自定义属性–>处理手势操作
我们可以看到自定义View和自定义ViewGroup略微有些不同,自定义ViewGroup多了个onlayout方法,那么这些方法都有什么作
用呢?这里由于篇幅的问题不做过多的描述,简单的说
onMeasure:用来计算,计算自身显示在页面上的大小
onLayout:用来计算子View摆放的位置,因为View已经是最小单元了,所以没有字View,所以没有onLayout方法
onDraw:用来绘制你想展示的东西
定义自定义属性就是暴露一些属性给外部调用
好了,了解了自定义View的基本自定义流程,我们可以知道我们应该需要自定义一个ViewGroup就可以满足该需求.
首先自定义一个View命名为FlowLayout继承ViewGroup
public class FlowLayout extends ViewGroup {
public FlowLayout(Context context) {
this(context,null);
}
public FlowLayout(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int count = getChildCount();
for (int i = 0; i < count; i++) {
getChildAt(i).layout(l,t,r,b);
}
}
}
可以看到onLayout是必须重写的,不然系统不知道你这个ViewGroup的子View摆放的位置.
然后XML中引用
<test.hxy.com.testflowlayout.FlowLayout 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:id="@+id/mFlowLayout"
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Activity中设置数据
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FlowLayout mFlowLayout = (FlowLayout) findViewById(R.id.mFlowLayout);
List<String> list = new ArrayList<>();
list.add("java");
list.add("javaEE");
list.add("javaME");
list.add("c");
list.add("php");
list.add("ios");
list.add("c++");
list.add("c#");
list.add("Android");
for (int i = 0; i < list.size(); i++) {
View inflate = LayoutInflater.from(this).inflate(R.layout.item_personal_flow_labels, null);
TextView label = (TextView) inflate.findViewById(R.id.tv_label_name);
label.setText(list.get(i));
mFlowLayout.addView(inflate);
}
}
运行一下:
剩余8页未读,继续阅读
weixin_38688550
- 粉丝: 7
- 资源: 912
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 15-面试题库(14个维度选拔考查).doc
- 28-绝对必备:HR经理面试提问大全(100问).doc
- 25-100个最权威的招聘面试题及回答解析.doc
- 27-HR经理常用的21个经典面试问题.doc
- 21-HR经理面试问题样例大全(30余种能力考查).doc
- 23-《职业测评--职场成功测评之完整题库》附答案.doc
- 26-200个名企的面试题详解(微软+谷歌+联合利华).doc
- 22-101个面试难题及结构化面试题库(附点评).doc
- 31-世界五百强面试题目及应答评点(全套50题).doc
- 30-面试通用题库以及压力测试.doc
- 29-面试通关秘笈:面试过程中常见的刁钻问题汇总.docx
- 32-招聘专员必备《HR结构化面试题库大全及解析》.doc
- python条件语句和高级应用
- 金属拉链穿头机(sw10可编辑+工程图)全套技术资料100%好用.zip
- 家具设备1出2三角木头机(sw18可逼哪家+工程图+BOM)全套技术资料100%好用.zip
- 1-销售面试题.xls
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0