EditText可以通过 Android:maxLength属性来限制输入的长度,但这是按照UNICODE来算的,当中英文混合时,想要限制输入长度为N个字符时就要通过InputFilter来实现了.

  InputFilter inputFilter = new InputFilter() {

  @Override

  public CharSequence filter(CharSequence source, int start, int end, Spanned dest,

  int dstart, int dend) {

  // TODO Auto-generated method stub

  try {

  //转换成中文字符集的长度

  int destLen = dest.toString().getBytes(“GB18030″).length;

  int sourceLen = source.toString().getBytes(“GB18030″).length;

  Log.e(“filter”, String.valueOf(destLen + sourceLen));

  //如果超过100个字符

  if (destLen + sourceLen > 100) {

  return “”;

  }

  //如果按回退键

  if (source.length() < 1 && (dend – dstart >= 1)) {

  return dest.subSequence(dstart, dend – 1);

  }

  //其他情况直接返回输入的内容

  return source;

  } catch (UnsupportedEncodingException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  return “”;

  }

  };

  editText.setFilters(new InputFilters[] {inputFilter});

更多相关文章

  1. 分支和循环(二)(零基础学习C语言)
  2. android String资源 包含 数学符号等特殊字符 及 参数占位符
  3. Android(安卓)将每三个数字加上逗号处理(通常使用金额方面的编辑)
  4. Android(安卓)汉字的正则表达式
  5. android中各种数据类型之间转换
  6. android studio错误: 常量字符串过长
  7. Android将InputStream转换为String和byte[]
  8. android类型转换
  9. 【Android(安卓)开发教程】保存到内部存储设备

随机推荐

  1. 数据库存储过程分页显示
  2. 一个比较实用的大数据量分页存储过程
  3. 删除重复的记录,并保存第一条记录或保存
  4. MSSQL数据库的定期自动备份计划。
  5. 删除重复记录
  6. 直接循环写入数据
  7. 模糊查询
  8. SQL语句的基本语法
  9. SQL语句技巧:按月统计数据
  10. 分页 SQLServer存储过程