自定义view+加减号

自定义流式布局

package com.example.shopcart04.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;

public class MyView extends ViewGroup {
    private int mleftMargin = 20;
    private int mtopMargin = 20;

    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);
        int leftMargin = mleftMargin;
        int topMargin = mtopMargin;
        //宽度
        int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
        //高度
        int modeHeight = MeasureSpec.getMode(heightMeasureSpec);
        //判断
        switch (modeHeight){
            case MeasureSpec.AT_MOST:
                int measuredHeight = 0;
                //循环遍历得到子的元素
                for (int j=0;j<getChildCount();j++){
                    int measuredWidth = getChildAt(j).getMeasuredWidth();
                    measuredHeight = getChildAt(j).getMeasuredHeight();
                    if (leftMargin+measuredWidth+mleftMargin>getWidth()){
                        leftMargin = mleftMargin;
                        topMargin+=measuredHeight+mtopMargin;
                    }
                    leftMargin+=measuredWidth+mleftMargin;
                }
                topMargin+=measuredHeight+mtopMargin;
                break;
        }
        setMeasuredDimension(sizeWidth,topMargin);
    }

    @Override
    protected void onLayout(boolean b, int i, int i1, int i2, int i3) {
        int leftMargin = mleftMargin;
        int topMargin = mtopMargin;

        for (int j=0;j<getChildCount();j++){
            int measuredWidth = getChildAt(j).getMeasuredWidth();
            int measuredHeight = getChildAt(j).getMeasuredHeight();

            if (leftMargin+measuredWidth+mleftMargin>getWidth()){
                leftMargin=mleftMargin;
                topMargin+=measuredHeight+mtopMargin;
                getChildAt(j).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }else {
                getChildAt(j).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
            }
            leftMargin+=measuredWidth+mleftMargin;
        }
    }



}

自定义加减号

package com.example.shopcart04.widge;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.shopcart04.R;

public class ButtonView extends LinearLayout implements View.OnClickListener {
    private Button jia;
    private Button jian;
    private TextView text_num;
    public ButtonView(Context context) {
        this(context,null);
    }


    public ButtonView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);

    }

    public ButtonView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context) {
        LayoutInflater.from(context).inflate(R.layout.view_layout, this);
        jia = findViewById(R.id.jia);
        jian = findViewById(R.id.jian);
        text_num = findViewById(R.id.text_num);
        jia.setOnClickListener(this);
        jian.setOnClickListener(this);

    }
    @Override
    public void onClick(View v) {
        String s = text_num.getText().toString();
        int i = Integer.parseInt(s);
        switch (v.getId()){
            case R.id.jia:

                    addAndMinusu.add();

                break;
            case R.id.jian:
                if (i>0){
                    if(addAndMinusu!=null){
                        addAndMinusu.minus();
                    }
                }else {
                    Toast.makeText(getContext(),"商品数量不能小于0",Toast.LENGTH_SHORT).show();
                }

        }
    }


    //定义的接口回调
    private   AddAndMinus addAndMinusu;
    public interface AddAndMinus{
        void add();
        void minus();
    }
    public void setAddAndMinusu(AddAndMinus addAndMinusu){
        this.addAndMinusu=addAndMinusu;
    }
}

猜你喜欢

转载自blog.csdn.net/h1047445540/article/details/82832309
今日推荐