EditText -- 设置最大输入20个中文或40个字符

本文介绍了一种在Android应用中限制EditText控件输入字符数量的方法,通过实现TextWatcher接口监测输入内容的变化并根据字符类型(英文或中文)进行计数,确保输入不超过预设的最大长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时需要对编辑框EditText限制输入的最大字符数或中文的个数,如下是一段不错的参考代码。
可参考此代码如 法炮制出自己想要的逻辑功能

myEditText.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {

int mTextMaxlenght = 0;
Editable editable = myEditText.getText();
String str = editable.toString().trim();
//得到最初字段的长度大小,用于光标位置的判断
int selEndIndex = Selection.getSelectionEnd(editable);
// 取出每个字符进行判断,如果是字母数字和标点符号则为一个字符加1,
//如果是汉字则为两个字符
for (int i = 0; i < str.length(); i++) {
char charAt = str.charAt(i);
//32-122包含了空格,大小写字母,数字和一些常用的符号,
//如果在这个范围内则算一个字符,
//如果不在这个范围比如是汉字的话就是两个字符
if (charAt >= 32 && charAt <= 122) {
mTextMaxlenght++;
} else {
mTextMaxlenght += 2;
}
// 当最大字符大于40时,进行字段的截取,并进行提示字段的大小
if (mTextMaxlenght > 40) {
// 截取最大的字段
String newStr = str.substring(0, i);
myEditText.setText(newStr);
// 得到新字段的长度值
editable = myEditText.getText();
int newLen = editable.length();
if (selEndIndex > newLen) {
selEndIndex=editable.length();
}
// 设置新光标所在的位置
Selection.setSelection(editable, selEndIndex);
Toast.makeText(MainActivity.this,"最大长度为40个字符或20个汉字!",Toast.LENGTH_SHORT).show();
}

}
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void afterTextChanged(Editable s) {

}
});

}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值