Android EditText 字符个数限制

方法一:

mEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(Constants.MAX_TEXT_INPUT_LENGTH)});

方法二:这个方法虽然复杂点,但我更偏向使用这种方法。

private TextWatcher mTextWatcher = new TextWatcher(){
Toast mToast = null;
public void beforeTextChanged(CharSequence s, int start,
int count,int after) {
}

public void onTextChanged(CharSequence s, int start,
int before,int count) {
}

public void afterTextChanged(Editable s) {
int nSelStart = 0;
int nSelEnd = 0;
boolean nOverMaxLength = false;

nSelStart = mEditText.getSelectionStart();
nSelEnd = mEditText.getSelectionEnd();

nOverMaxLength = (s.length() > Constants.MAX_TEXT_INPUT_LENGTH) ? true : false;
if(nOverMaxLength){
if(null == mToast){
mToast = Toast.makeText(mContext,
R.string.IDS_MSG_TEXT_OVER_MAXLENGTH,
Toast.LENGTH_SHORT);
}
mToast.show();

s.delete(nSelStart - 1, nSelEnd);

mEditText.setTextKeepState(s);//请读者注意这一行,保持光标原先的位置,而 mEditText.setText(s)会让光标跑到最前面,

//就算是再加mEditText.setSelection(nSelStart)也不起作用
}
}
};

android editText 输入字数限制 2011-01-04 18:04

方法一:
// 输入框限制输入字数
editText.addTextChangedListener(new TextWatcher() {
private CharSequence temp;
private boolean isEdit = true;
private int selectionStart ;
private int selectionEnd ;
@Override
public void beforeTextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
temp = s;
}

@Override
public void onTextChanged(CharSequence s, int arg1, int arg2,
int arg3) {
}

@Override
public void afterTextChanged(Editable s) {
selectionStart = editText.getSelectionStart();
selectionEnd = editText.getSelectionEnd();
Log.i("gongbiao1",""+selectionStart);
if (temp.length() > Constant.TEXT_MAX) {
Toast.makeText(KaguHomeActivity.this,
R.string.edit_content_limit, Toast.LENGTH_SHORT)
.show();
s.delete(selectionStart-1, selectionEnd);
int tempSelection = selectionStart;
editText.setText(s);
editText.setSelection(tempSelection);
}
}


});


方法二:
利用EditText可以设置filter的特性,自定义一个LengthFilter,当输入字数超过限制时 ,做出自定义的提示
// 输入框限制输入字数
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(Constant.TEXT_MAX) {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (source.length() > 0 && dest.length() == Constant.TEXT_MAX) {
if ((System.currentTimeMillis() - toastTime) > interval) {
toastTime = System.currentTimeMillis();
Toast
.makeText(KaguHomeActivity.this,
R.string.edit_content_limit,
Toast.LENGTH_SHORT).show();
}
}
if (dest.toString().equals(
getResources().getString(R.string.input_default_txt))) {
Bundle data = new Bundle();
data.putCharSequence("source", source);
Message message = textHandler.obtainMessage();
message.setData(data);
message.sendToTarget();
}

return super.filter(source, start, end, dest, dstart, dend);
}
};
editText.setFilters(filters);
private Handler textHandler = new Handler() {
@Override
public void handleMessage(Message msg) {

Bundle data = msg.getData();
CharSequence source = data.getCharSequence("source");
editText.setTextColor(Color.BLACK);
editText.setText(source);
editText.setSelection(source.length());
}
};

更多相关文章

  1. 【Android(安卓)应用开发】Activity 状态保存 OnSaveInstanceSta
  2. Android路径中提取文件名
  3. Android中dp与px互转的方法
  4. android 自定义圆形进度条
  5. Android(安卓)5.0 API 的变化——开发人员注意
  6. android之让EditText不弹出软键盘
  7. Android中的前置服务
  8. 《转》完美解决微信video视频隐藏控件和内联播放问题
  9. 更改cocos2d-x android 项目的cocos2d-x的版本

随机推荐

  1. android 获得屏幕宽度 高度
  2. 通话距离感应实现源码
  3. android销毁Activity和被系统销毁时的数
  4. Android(安卓)listview中使用button解决
  5. Android(安卓)签名
  6. android关于获取手机唯一码的组合文章
  7. android Activity单元测试
  8. android 用户注册demo
  9. CooradicatoarLayout 介绍
  10. Shape属性详解