突然想到了一个更容易的实现方法,就是继承RelativeLayout,记录每一个child的w(h不考虑),之后就是判断换行,如果换行,那么设置
换行的view是上一行第一个的下面……
换行的view是上一行第一个的下面……
2015-01-08
1、流式布局特点、应用场景
2、自定义ViewGroup,重点重写下面两个方法
1、onMeasure:测量子view的宽高,设置自己的宽和高
2、onLayout:设置子view的位置
onMeasure:根据子view的布局文件,为子view设置测量模式
测量=测量模式+测量值;
测量模式有3种:1、exactly:100dp,match_parent;2、at_most:wrap_content;3、unspecified:子控件,想要多大就多大,很少见
ViewGroup - LayoutParams
2、自定义ViewGroup,重点重写下面两个方法
1、onMeasure:测量子view的宽高,设置自己的宽和高
2、onLayout:设置子view的位置
onMeasure:根据子view的布局文件,为子view设置测量模式
测量=测量模式+测量值;
测量模式有3种:1、exactly:100dp,match_parent;2、at_most:wrap_content;3、unspecified:子控件,想要多大就多大,很少见
ViewGroup - LayoutParams
2015-01-08
已采纳回答 / hyman
你好,你说的是Button吧,你弄个LinearLayout,方向水平,放置两个Button,你在xml可视化视图里面看看Button的范围,或者直接运行看写效果,你就明白了。
2014-12-28
很入门和清楚的讲解, 没有讲太多关于View和ViewGroup的东西, 而是讲了够用的内容, 并通过清晰简单而又实用的简单例子带入门, 支持
2014-12-27
讲师回答 / hyman
你好,本质上和你向Linearlayout这类ViewGroup中添加控件一致呀,你在添加前,如果你是TextView,直接setOnClickListener就可以了。关于区分,你可以根据呈现的text,或者setTag都可以。
2014-12-24
楼下笔误了,应该是
(如:this(context, attrs, R.attr.flowLayoutStyle);)
(如:this(context, attrs, R.attr.flowLayoutStyle);)
2014-12-21
视频讲得挺好的,可以学习到很好的想法。
关于View的3个构造方法,我的理解:
从xml布局文件中实例化的view,调用的是2个参数的构造方法,3个参数的构造方法通常是在2个参数的构造方法中手动调用的
(如:this.FlowLayout(context, attrs, R.attr.flowLayoutStyle)),第三个参数表示的是该自定义view的默认样式(default style),通常在自定义的themes中指定。
以上有不正确的地方,请指正。
关于View的3个构造方法,我的理解:
从xml布局文件中实例化的view,调用的是2个参数的构造方法,3个参数的构造方法通常是在2个参数的构造方法中手动调用的
(如:this.FlowLayout(context, attrs, R.attr.flowLayoutStyle)),第三个参数表示的是该自定义view的默认样式(default style),通常在自定义的themes中指定。
以上有不正确的地方,请指正。
2014-12-21