You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.2 KiB
Java

2 years ago
package com.rehome.sbcksyy.weiget;
/**
* Create By HuangWenFei
* 2022-12-09 15:15
*
*/
import android.content.Context;
import android.content.res.TypedArray;
import androidx.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.rehome.sbcksyy.R;
/**
*
*/
public class NumAddSubView extends LinearLayout {
ImageButton ibtnSub;
TextView tvNum;
ImageButton ibtnAdd;
private View view;
private int maxNum = 100;
private int minNum = 1;
public NumAddSubView(Context context) {
super(context, null);
initView();
}
public NumAddSubView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView();
if (attrs != null) {
TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.NumAddSubView);
maxNum = type.getInt(R.styleable.NumAddSubView_maxNum, 100);
minNum = type.getInt(R.styleable.NumAddSubView_minNum, 1);
}
}
public NumAddSubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
private void initView() {
if (view == null) {
view = View.inflate(getContext(), R.layout.num_add_sub_layout, this);
ibtnSub = view.findViewById(R.id.ibtn_sub);
tvNum = view.findViewById(R.id.tv_num);
ibtnAdd = view.findViewById(R.id.ibtn_add);
ibtnAdd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int nowMax = getNum(tvNum) + 1;
if (nowMax <= maxNum) {
tvNum.setText(nowMax + "");
if (listener != null) {
listener.numChange(tvNum.getText().toString());
}
}
}
});
ibtnSub.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int nowMin = getNum(tvNum) - 1;
if (nowMin >= minNum) {
tvNum.setText(nowMin + "");
if (listener != null) {
listener.numChange(tvNum.getText().toString());
}
}
}
});
}
tvNum.setText("1");
}
public void setMaxNum(int maxNum) {
this.maxNum = maxNum;
}
public void setMinNum(int minNum) {
this.minNum = minNum;
}
public void setNum(String num) {
tvNum.setText(num);
}
public int getNum(TextView num) {
return Integer.parseInt(num.getText().toString());
}
public String getNum() {
return tvNum.getText().toString();
}
private NumChangeListener listener;
public void setListener(NumChangeListener listener) {
this.listener = listener;
}
public interface NumChangeListener {
void numChange(String num);
}
}