public class Jiajian extends LinearLayout implements View.OnClickListener {
private Button tvDecrease;
private Button tvIncrease;
private Button etNumber;
private Context context;
//定一个商品默认数量
private int count=1;
//定义一个变量规范这个商品数量的最大值
private int max=1000;
//定义默认颜色
private int defaultColor= Color.parseColor("#ffffff");
public Jiajian(Context context) {
this(context,null);
}
public Jiajian(Context context, @Nullable AttributeSet attrs) {
this(context, attrs,0);
}
public Jiajian(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context=context;
//将自定义属性与当前的这个自定组合控件进行关联
TypedArray ta = context.getTheme().obtainStyledAttributes(attrs, R.styleable.Jiajian, defStyleAttr, 0);
//得到集合中的背景颜色属性,如果没有,用默认的颜色
int color=ta.getColor(R.styleable.Jiajian_bgcolor,defaultColor);
View view=View.inflate(context, R.layout.jiajian,this);
tvDecrease = view.findViewById(R.id.tvDecrease);
tvIncrease = view.findViewById(R.id.tvIncrease);
etNumber = view.findViewById(R.id.etNumber);
//设置点击事件
tvDecrease.setOnClickListener(this);
tvIncrease.setOnClickListener(this);
//初始两个按钮的颜色
tvDecrease.setBackgroundColor(color);
tvIncrease.setBackgroundColor(color);
}
public interface NumberLisner{
void callBack(int couint);
}
private NumberLisner numberLisner;
public void setNumberlistener(NumberLisner numberLisner){
this.numberLisner = numberLisner;
}
//定义一个方法,给调用者设置最大商品数量
public void setGoodsMax(int max){
this.max=max;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.tvDecrease://减商品的数量
{
if(count>1){
count--;
etNumber.setText(""+count);
numberLisner.callBack(Integer.parseInt(etNumber.getText().toString()));
}else {
Toast.makeText(context,"已经为1了不能再减了",Toast.LENGTH_SHORT).show();
}
}
break;
case R.id.tvIncrease:
{
if(count<max){
count++;
etNumber.setText(""+count);
numberLisner.callBack(Integer.parseInt(etNumber.getText().toString()));
}
}
break;
}
}
}
xml布局文件
<Button
android:gravity="center_horizontal"
android:id="@+id/tvDecrease"
android:layout_width="45px"
android:layout_height="45px"
android:layout_weight="1"
android:text="-"
/>
<Button
android:id="@+id/etNumber"
android:layout_width="45px"
android:layout_height="45px"
android:layout_weight="1"
android:background="#ffffff"
android:text="1"
/>
<Button
android:gravity="center_horizontal"
android:id="@+id/tvIncrease"
android:layout_width="45px"
android:layout_height="45px"
android:layout_weight="1"
android:text="+"
/>
attrs布局文件
<resources>
<!--声明自己的属性-->
<declare-styleable name="Jiajian">
<attr name="bgcolor" format="color"/>
</declare-styleable>
</resources>
MainActivity代码
Jiajian test = findViewById(R.id.test);
test.setNumberlistener(new Jiajian.NumberLisner() {
@Override
public void callBack(int couint) {
Toast.makeText(MainActivity.this, "购物车商品数量变化" + couint,Toast.LENGTH_SHORT).show();
}
});