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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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);
}
}