原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768

方法一:

在 xml 文件中设置文本编辑框属性作字符数限制

如:android:maxLength="10" 即限制最大输入字符个数为10

方法二:

在代码中使用InputFilter 进行过滤

//editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)}); 即限定最大输入字符数为20

  1. public class TextEditActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. EditText editText = (EditText)findViewById(R.id.entry);
  8. editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});
  9. }
  10. }

方法三:

利用 TextWatcher 进行监听

  1. package cie.textEdit;
  2. import android.text.Editable;
  3. import android.text.Selection;
  4. import android.text.TextWatcher;
  5. import android.widget.EditText;
  6. /*
  7. * 监听输入内容是否超出最大长度,并设置光标位置
  8. * */
  9. public class MaxLengthWatcher implements TextWatcher {
  10. private int maxLen = 0;
  11. private EditText editText = null;
  12. public MaxLengthWatcher(int maxLen, EditText editText) {
  13. this.maxLen = maxLen;
  14. this.editText = editText;
  15. }
  16. public void afterTextChanged(Editable arg0) {
  17. // TODO Auto-generated method stub
  18. }
  19. public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
  20. int arg3) {
  21. // TODO Auto-generated method stub
  22. }
  23. public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
  24. // TODO Auto-generated method stub
  25. Editable editable = editText.getText();
  26. int len = editable.length();
  27. if(len > maxLen)
  28. {
  29. int selEndIndex = Selection.getSelectionEnd(editable);
  30. String str = editable.toString();
  31. //截取新字符串
  32. String newStr = str.substring(0,maxLen);
  33. editText.setText(newStr);
  34. editable = editText.getText();
  35. //新字符串的长度
  36. int newLen = editable.length();
  37. //旧光标位置超过字符串长度
  38. if(selEndIndex > newLen)
  39. {
  40. selEndIndex = editable.length();
  41. }
  42. //设置新光标所在的位置
  43. Selection.setSelection(editable, selEndIndex);
  44. }
  45. }
  46. }

对应的 activity 部分的调用为:

  1. package cie.textEdit;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.text.InputFilter;
  5. import android.widget.EditText;
  6. public class TextEditActivity extends Activity {
  7. /** Called when the activity is first created. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. EditText editText = (EditText) findViewById(R.id.entry);
  13. editText.addTextChangedListener(new MaxLengthWatcher(10, editText));
  14. }
  15. }

限制输入字符数为10个

main.xml 文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TextView
  6. android:id="@+id/label"
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:text="Type here:"/>
  10. <EditText
  11. android:id="@+id/entry"
  12. android:singleLine="true"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:background="@android:drawable/editbox_background"
  16. android:layout_below="@id/label"/>
  17. <Button
  18. android:id="@+id/ok"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:layout_below="@id/entry"
  22. android:layout_alignParentRight="true"
  23. android:layout_marginLeft="10dip"
  24. android:text="OK" />
  25. <Button
  26. android:layout_width="wrap_content"
  27. android:layout_height="wrap_content"
  28. android:layout_toLeftOf="@id/ok"
  29. android:layout_alignTop="@id/ok"
  30. android:text="Cancel" />
  31. </RelativeLayout>

效果为输入了10个字符后,光标停在末尾

【转】android 中如何限制 EditText 最大输入字符数的更多相关文章

  1. android 中如何限制 EditText 最大输入字符数

    方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...

  2. SecureCRT 如何改变对话框--每行输入字符数的多少

    通过设置Logical columns的大小,选中Retain size an font来改变每行输入字符数的多少 1.设置Session Options–>Terminal–>Emula ...

  3. Android 开发之拦截EditText的输入内容,定制输入内容

    1.EditText作为一个比较成熟的View,在Android的应用开发中得到极为广泛的使用.在某些特殊情况下,我们可能需要定制EditText的输入内容, 只允许指定功能的输入,例如输入一个”dd ...

  4. (转)Android EditText限制输入字符的5种实现方式

    最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式:  设置EditText的inputType属性,可以 ...

  5. EditText限制输入字符类型的几种方式

    最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1.第一种方式是通过EditText的inputType来实现,可以通过xml或者Java文件来设置.假如我 ...

  6. Android中怎么破解游戏之修改金币数

    我们在玩游戏的时候总是会遇到一些东东需要进行购买的,但是我们可能又舍不得花钱,那么我们该怎么办呢?那就是用游戏外挂吧!我们这里说的是Android中的游戏,在网上搜索一下移动端游戏外挂,可能会找到一款 ...

  7. 限制input输入字符数(中文2个字符,英文1个字符)

    input的maxlength可以限制input的输入的字符数,但是是字符串的长度,相当于判断str.length;然而经常会有中文字符算2个字符英文算1个字符的需求,目前只能通过编写代码来实现. & ...

  8. android Edittext自定义输入字符和类型

    android提供了两种方式 一种是setInputType 一种是setKeyListener 直接上代码,有注释 import android.app.Activity; import andro ...

  9. Android中findViewById()获取EditText 空指针问题

    因为EditText editText = (EditText)layout.findViewById(R.id.input_content);是从Dialog对话框布局layout中寻找ID为inp ...

随机推荐

  1. 1小时学Python脚本

    如果我们有这么一项任务:简单測试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200.        思路:用shell编程.(Linux一般是bash而 ...

  2. PHP安全编程:会话数据注入 比会话劫持更强大的攻击(转)

    一个与会话暴露类似的问题是会话注入.此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限.因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能.下例显示了一个允许用户 ...

  3. Lucene全文检索

    Lucene写入和更新操作: if (id.equals("")) { this.goodsService.save(goods); String goods_lucene_pat ...

  4. python-打印简单公司员工信息表

    python-打印简单公司员工信息表 要求,输入name不为空,输入次数最多3次,3次后跳出程序: 知识点: raw_input str转int whil if elif else continue ...

  5. 分析器错误消息: 未能加载文件或程序集“System.WEB.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

    分析器错误消息: 未能加载文件或程序集“System.WEB.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=3 ...

  6. HTML5中的二进制大对象Blob(转)

    HTML5中的Blob对象和MYSQL中的BLOB类型在概念上是有点区别的.MYSQL中的BLOB类型就只是个二进制数据容器.而HTML5中的Blob对象除了存放二进制数据外还可以设置这个数据的MIN ...

  7. c-指针的指针

    概述: 贴上一个'经典C语言程序设计100例'的第77个程序 #include <stdio.h> int main(void) { char *s[]={"man", ...

  8. 【SQL Server】SQL与Excel的数据互通导入导出

    转载至:http://jingyan.baidu.com/article/73c3ce28c839b7e50243d950.html

  9. SQL In的替换

    前2天在搞SQL的的时候,发现其中有很多in的操作,诸如:id in(1,2,3)或id in(select id from table……),这个对SQL来说并不是最好的选择,执行效率是偏低的[它执 ...

  10. 自由创造属于你的H5内容

    在这里,你可以自由创造属于你的H5内容  mark下 http://www.ih5.cn/