activity
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
/**
* author:Created by LiQiang on 2017-12-30.
*/
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 onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//测量所有子孩子
measureChildren(widthMeasureSpec,heightMeasureSpec);
}
@Override
protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
int width = getWidth();
int w = 0;
int h = 0;
for (int j = 0; j < getChildCount(); j++) {
//每个子孩子
View child = getChildAt(j);
//当一行的孩子的宽度+=总宽大于app总宽时换行
if (w + child.getWidth() < width) {
}else{
//把计算的总宽初始化
//高度增加就是换行,每换一次高度都加空间的高度
w = 0;
h += child.getMeasuredHeight();
}
//布局
child.layout(w,h,w+child.getMeasuredWidth(),h+child.getMeasuredHeight());
//完成后宽度增加
w += child.getMeasuredWidth();
}
}
}
Layout
<com.bwlq.demo.FlowLayout
android:layout_width="match_parent"
android:layout_height="500dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="将进酒" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="李白" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="君不见黄河之水天上来" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="奔流到海不复还" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="君不见高堂明镜悲白发" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="朝如青丝暮成雪" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="人生得意需尽欢" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="莫使金樽空对月" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="天生我材必有用" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="千金散尽还复来" />
</com.bwlq.zhoukao1.FlowLayout>