第一种:
count.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence pCharSequence, int pI, int pI1, int pI2) {
}
@Override
public void onTextChanged(CharSequence pCharSequence, int pI, int pI1, int pI2) {
for (int i = 0; i < pCharSequence.toString().length(); i++) {
char c = pCharSequence.toString().charAt(i);
Integer integer = Integer.valueOf(c + "");
if (integer > 2) {
count.setText(2 + "");
//toast在屏幕中间显示
Toast toast = Toast.makeText(RentActivity.this, "最高可租2辆车!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} else if (integer < 1) {
count.setText(1 + "");
Toast toast = Toast.makeText(RentActivity.this, "最低可租1辆车!", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
}
@Override
public void afterTextChanged(Editable pEditable) {
}
});
第二种:一个工具类
public class RegionNumberEditText extends androidx.appcompat.widget.AppCompatEditText {
private Context context;
private int max;
private int min;
public RegionNumberEditText(Context context) {
super(context);
this.context = context;
}
public RegionNumberEditText(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
}
public RegionNumberEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context = context;
}
/**
* 设置输入数字的范围
* @param maxNum 最大数
* @param minNum 最小数
*/
public void setRegion(int maxNum, int minNum) {
setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
this.max = maxNum;
this.min = minNum;
}
public void setTextWatcher() {
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (start >= 0) {//从一输入就开始判断,
if (min != -1 && max != -1) {
try {
int num = Integer.parseInt(s.toString());
//判断当前edittext中的数字(可能一开始Edittext中有数字)是否大于max
if (num > max) {
s = String.valueOf(max);//如果大于max,则内容为max
setText(s);
// Prompt.showTips(context, "金额不能超过" + max + "元");
} else if (num < min) {
s = String.valueOf(min);//如果小于min,则内容为min
setText(s);
}
} catch (NumberFormatException e) {
// LFLog.e("ontextchanged", "==" + e.toString());
}
//edittext中的数字在max和min之间,则不做处理,正常显示即可。
return;
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
引用:
<com.lmc.chatroom.RegionNumberEditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
name.setRegion(3,2);
name.setTextWatcher();