思路:中文占一個(gè)長(zhǎng)度,英文占0.5個(gè)長(zhǎng)度(同時(shí)符號(hào)區(qū)分中英文)。
步驟:
1.EditText添加監(jiān)聽(tīng)是事件
2.在onTextChanged()方法中計(jì)算長(zhǎng)度
具體代碼如下:
editText.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) {
int contentlength = (int) Math.round(contentLength(s));
if (contentlength>30){//截取,最大長(zhǎng)度為30,超過(guò)30截取
CharSequence charSequence=s.subSequence(0,start);
editText.setText(charSequence);
Editable editable = editText.getText();
int selEndIndex = editable.length();
Selection.setSelection(editable, selEndIndex);//光標(biāo)移動(dòng)到末尾
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
計(jì)算長(zhǎng)度
public double contentLength(CharSequence str) {
double len = 0;
for (int i = 0; i < str.length(); i++) {
int temp = str.charAt(i);
if (temp < 127 && temp > 0) {
len += 0.5;
} else {
len++;
}
}
return len;
}