android 中如何限制 EditText 最大android 自动输入字符符数

android 中如何限制 EditText 最大输入字符数
1、在 xml 文件中设置文本编辑框属性作字符数限制
如:android:maxLength=&10& 即限制最大输入字符个数为10
但是这种方法有的时候并不适用,比如你在代码中为空间又添加了一个InputFilter,这个filter的作用可能是对你输入的字符进行一些格式上的限制,那么这个filter就会使你在布局文件中定义的maxLength失效。这个时候就需要在代码中设置EditText的最大输入字符数。
2、在代码中使用InputFilter 进行过滤
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)}); 即限定最大输入字符数为10
3、利用 TextWatcher 进行监听
editText.addTextChangedListener(new MaxLengthWatcher(10, editText));
public class MaxLengthWatcher implements TextWatcher {
private int maxLen = 0;
private EditText editText =
private TextView textView =
public MaxLengthWatcher(int maxLen, EditText editText, TextView textView) {
this.maxLen = maxL
this.editText = editT
this.textView = textV
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
Editable editable = editText.getText();
int len = editable.length();
if(len & maxLen)
int selEndIndex = Selection.getSelectionEnd(editable);
String str = editable.toString();
//截取新字符串
String newStr = str.substring(0,maxLen);
editText.setText(newStr);
editable = editText.getText();
//新字符串的长度
int newLen = editable.length();
//旧光标位置超过字符串长度
if(selEndIndex & newLen)
selEndIndex = editable.length();
//设置新光标所在的位置
Selection.setSelection(editable, selEndIndex);
textView.setText(len + &/& + maxLen);
本文已收录于以下专栏:
相关文章推荐
在 xml 文件中设置文本编辑框属性作字符数限制
如:android:maxLength=&10& 即限制最大输入字符个数为10
基本思路同方法三,监听 EditText 当中输入字符串的长度,如果超长,给出提示。
package cie.textE
import android.app.Activity...
原博客链接:fulinwsuafcie
在 xml 文件中设置文本编辑框属性作字符数限制
如:android:maxLength=&10& 即限制最大输入字符个数为10
在代码中使用InputFilter...
Android EditText输入限制:整数,小数,最大值,最大字符长度,手机号
EditText有个属性android:maxLength=”xxx” ,可以设置EditText的最大长度。
也可以用如下代码设置长度,editText.setFilters( new
转自/cat-fang/archive//2013428.html
布局中EditText在android布局中经常用到,对Edi...
布局中EditText在android布局中经常用到,对EditText中输入的内容也经常需要进行限制,我们可以通过TextWatcher去观察输入框中输入的内容,作个笔记。
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
下面这个方法删除字符时就会有问题,键盘会直接卡死,求解决办法,最好是测试过的
CharSequence d = "\n";
int totalLength = s.length();
int lineNum = SINGLE_LINE_LENGTH + 1;
if (totalLength & 25) {
if ((totalLength + 1) % lineNum == 0) {
mEditText.append(d);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在xml中得EditText中设置下面属性
android:maxLength=""
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
android:maxLength=""可以限制字符个数,但如果按照题主的说法他是需要控制每行个字符数。意思就是题主多行输入,每行只能输入多少字,不过我觉得并没有必要,直接控件的宽度让其自动换行即可,没必要约定字符数,否则在某些屏幕不同的手机上肯定会出问题的,而只需要控制总体的字符数就可以了。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:Android的EditText输入长度限制_edittext限制输入长度_词汇网
<meta name="keywords" content="Android的EditText输入长度限制edittext限制输入长度,基于Android平台,继承LengthFilter类的输入长度限制类
Android的EditText输入长度限制
责任编辑:词汇网 发表时间: 4:06:36
基于Android平台,继承LengthFilter类的输入长度限制类 标签:
代码片段(1)[全屏查看所有代码] 1.[代码]字符判断若只判断中文可以考虑用位运算提高处理速度 public class CustomLengthFilter extends LengthFilter {// 字符串能输入的最大长度private onFullL/** * @param max * 字符串能输入的最大长度,半角字符算1,全角字符算2 */public CustomLengthFilter(final int max) {super(max);this.max =}@Overridepublic CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) {int mlength = getLength(dest.subSequence(dstart, dend).toString());// 修改字符串的长度int dlength = getLength(dest.toString());// 已有字符串的长度int slength = getLength(source.subSequence(start, end).toString());// 要增加的字符串的长度int keep = this.max - (dlength - mlength);// 还差多少字符到最大长度if (keep = slength) {// 还没到达最大长度} else {// 超出最大长度int tmp = 0;for (index = index
keep) {}}if (null != listener) {listener.isFull();}return source.subSequence(start, index);}}public void setOnFullListener(onFullListener listener) {this.listener =}public interface onFullListener {/** * 这个方法会在输入字符串超出极限时被调用 */void isFull();}/** * 判断字符串是否为空或空串 * * @param str * 待判断的字符串 * @return true:字符串为空或空串 */public static boolean isNull(final String str) {if (null == str || "".equals(str)) {} else {}}/** * 获取字符串长度(半角算1、全角算2) * * @param str * 字符串 * @return 字符串长度 */public static int getLength(final String str) {if (isNull(str)) {return 0;}int len = str.length();for (int i = 0; i < str.length(); i++) {if (isFullwidthCharacter(str.charAt(i))) {len = len + 1;}}}/** * 获取字符串的全角字符数 * * @param str * 待计算的字符串 * @return 字符串的全角字符数 */public static int getFwCharNum(final String str) {if (isNull(str)) {return 0;}int num = 0;for (int i = 0; i = 32 && ch = 65377 && ch <= 65439) {// 日文半角片假名和符号} else {}}}
上一集:没有了 下一集:
相关文章:&&&&&&&&
最新添加资讯
24小时热门资讯
附近好友搜索Android EditText限制输入字数的方法
作者:nosxcy
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android EditText限制输入字数的方法,涉及Android针对EditText文本与字符串操作相关技巧,需要的朋友可以参考下
本文实例讲述了Android EditText限制输入字数的方法。分享给大家供大家参考,具体如下:
//新浪微博字数限制
private static final int WEIBO_CONTENT_LENGTH_LIMITED = 140;
//添加微博内容edittext
mInputEditText.addTextChangedListener(mTextWatcher);
private TextWatcher mTextWatcher = new TextWatcher() {
private int editS
private int editE
public void afterTextChanged(Editable s) {
editStart = mInputEditText.getSelectionStart();
editEnd = mInputEditText.getSelectionEnd();
// 先去掉监听器,否则会出现栈溢出
mInputEditText.removeTextChangedListener(mTextWatcher);
while (mInputEditText.getText().toString().length() & WEIBO_CONTENT_LENGTH_LIMITED) {
s.delete(editStart - 1, editEnd);
editStart--;
editEnd--;
mInputEditText.setText(s);
mInputEditText.setSelection(editStart);
mInputEditText.addTextChangedListener(mTextWatcher);
setPromptContent();
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
public void onTextChanged(CharSequence s, int start, int before, int count) {
* refresh prompt content numbers
private void setPromptContent() {
int contentLength = mInputEditText.getText().toString().length();
mInputEditText.setSelection(contentLength);
int limitedLength = WEIBO_CONTENT_LENGTH_LIMITED - contentL
String prefix = getResources().getString(R.string.weibo_content_numbers_prefix);
String suffix = getResources().getString(R.string.weibo_content_numbers_suffix);
String promptContentNumbers = prefix + limitedLength +
SpannableStringBuilder style = new SpannableStringBuilder(promptContentNumbers);
style.setSpan(new ForegroundColorSpan(Color.RED), prefix.length(), promptContentNumbers.length() - suffix.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mPromptContentNumbers.setText(style);
更多关于Android控件相关内容感兴趣的读者可查看本站专题:《》
希望本文所述对大家Android程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具在Android开发应用的时候,文本编辑框中最多输入140个字,经常会显示还剩多少字以限制用户输入的字数,
  EditT//定义一个文本输入框
&&&&& TextV// 用来显示剩余字数
&&&&& int num = 140;//限制的最大字数
  content = (EditText) findViewById(R.id.et_content);
&&&&& hasnumTV = (TextView) findViewById(R.id.tv_num);
&&&&& hasnumTV.setText(num+"");
  下面为EditText文本框添加监听
  content.addTextChangedListener(new TextWatcher() {
  &&&&&&&&&&& private CharS
  &&&&&&&&&&& private int selectionS
  &&&&&&&&&&& private int selectionE
&&&&&&&&&&&&&&&&& public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  &&&&&&&&&&& }
  &&   && public void onTextChanged(CharSequence s, int start, int before, int count) {
  &&&&&&&&&&&&&&&& temp =
  &&&&&&&&&&& }
  &&&&&&&   &&&&&&&&&&   &&&&&&&
  &&&&&&&&&&& public void afterTextChanged(Editable s) {
  &&&&&&&&&&&&&&& int number = num - s.length();
  &&&&&&&&&&&&&&& hasnumTV.setText("" + number);
  &&&&&&&&&&&&&&& selectionStart = content.getSelectionStart();
  &&&&&&&&&&&&&&& selectionEnd = content.getSelectionEnd();
  &&&&&&&&&&&&&&& if (temp.length() & num) {
  &&&&&&&&&&&&&&&&&&& s.delete(selectionStart - 1, selectionEnd);
  &&&&&&&&&&&&&&&&&&& int tempSelection = selectionE
  &&&&&&&&&&&&&&&&&&& content.setText(s);
  &&&&&&&&&&&&&&&&&&& content.setSelection(tempSelection);//设置光标在最后
  &&&&&&&&&&&&&&& }
  &&&&&&&&&&& }
  && });
浏览: 309668 次
来自: 深圳
服务器用什么实现
只放debug.keystore但是没给密码啊。。。。。。
[color=green][size=x-small][ali ...
用你这个方法为什么我只想模拟点击 无法实现啊
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 输入框限制特殊字符 的文章

 

随机推荐