Android自定义ViewGroup实现标签流式布局
一、效果图
我们需要实现类似搜索历史记录,或者标签类的展示,除了使用google flowlayout,也可以自定义viewgroup实现
二、代码实现
package com.yhcode.androidview.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
public class FlowLayout extends ViewGroup {
public FlowLayout(Context context) {
super(context);
}
public FlowLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
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();
int lineWidth = 0;
int lineHeight = 0;
int top = 0;
int left = 0;
for (int i = 0; i < count; i++) {
View childView = getChildAt(i);
MarginLayoutParams layoutParams = (MarginLayoutParams) childView.getLayoutParams();
int childWith = childView.getMeasuredWidth() + layoutParams.leftMargin + layoutParams.rightMargin;
int childHeight = childView.getMeasuredHeight() + layoutParams.topMargin + layoutParams.bottomMargin;
if (childWith + lineWidth > getMeasuredWidth()) {
top += lineHeight;
left = 0;
lineHeight = childHeight;
lineWidth = childWith;
} else {
lineHeight =