package cn.hzw.graffitidemo; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; /** * Created by Administrator on 2017/6/25. */ public class LXBFlowLayout extends ViewGroup { private int mHorizontalSpacing; private int mVerticalSpacing ; public LXBFlowLayout(Context context) { this(context, null); } public LXBFlowLayout(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); measureChildren(widthMeasureSpec, heightMeasureSpec); } // 设置两个view水平间距 public void setHorizontalSpacing(int spacing) { if (mHorizontalSpacing != spacing) { mHorizontalSpacing = spacing; requestLayout(); } } /** 设置纵向间距*/ public void setVerticalSpacing(int spacing) { if (mVerticalSpacing != spacing) { mVerticalSpacing = spacing; requestLayout(); } } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { int width = getWidth(); int height = getHeight(); int tw = 0; int th = 0; for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); if (tw + mHorizontalSpacing + child.getWidth() < width) { } else { tw = 0; th += child.getMeasuredHeight() + mVerticalSpacing; //超过屏幕的宽度,自动换行,另起一列 } child.layout(tw + mHorizontalSpacing, th + mVerticalSpacing, tw + child.getMeasuredWidth(), th + child.getMeasuredHeight() ); tw += child.getMeasuredWidth() + mHorizontalSpacing; } } }
android简易流式布局
最新推荐文章于 2024-01-10 14:19:03 发布