Android_自定义view设置控件位置

一:布局



    
    
        
        
        
    



二:创建类,继承ViewGroup

public class MyView extends ViewGroup{
    public MyView(Context context) {
        this(context,null);
    }

    public MyView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyView(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 count = getChildCount();
        //设置默认起始值
        int startWidth = 0;
        int startHeight = 0;
        //循环遍历子控件
        for (int j = 0; j < count; j++) {
            //取出每一条子视图
            View v = getChildAt(j);
//            注释部分可实现流式布局,内容满之后换行
//            if(startWidth+v.getMeasuredWidth()>getMeasuredWidth())
//            {
//                startHeight+=v.getMeasuredHeight();
//                startWidth = 0;
//            }
            //给每一个子视图设置定位
            v.layout(startWidth,startHeight,startWidth+v.getMeasuredWidth(),startHeight+v.getMeasuredHeight());
            startWidth+=v.getMeasuredWidth();
            startHeight+=v.getMeasuredHeight();
        }
    }
}



你可能感兴趣的:(Android_自定义view设置控件位置)