android 中如何限制 EditText 最大输入框字符长度限制字符数

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开发应用的时候,文本编辑框中最多输入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);//设置光标在最后
  &&&&&&&&&&&&&&& }
  &&&&&&&&&&& }
  && });
浏览: 309731 次
来自: 深圳
服务器用什么实现
只放debug.keystore但是没给密码啊。。。。。。
[color=green][size=x-small][ali ...
用你这个方法为什么我只想模拟点击 无法实现啊
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Android中限制EditText(输入框)文字输入长度_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android中限制EditText(输入框)文字输入长度
来源:Linux社区&
作者:herbert5069
开发过程经常遇到要输入用户名等类似要限制输入字数的要求,我们可以用InputFilter来实现,
下面是继承的InputFilter:
public&class&MyInputFilter&implements&InputFilter&{&&
&&&private&Paint&mP&&
&&&private&int&mMaxW&&
&&&private&static&final&String&TAG&=&"MyInputFilter";&&
&&&private&int&EDIT_WIDTH&=&<FONT color=#c;&&
&&&private&int&mPadding&=&10;&&
&&&public&MyInputFilter(Paint&paint,&int&maxWidth)&{&&
&&&&&&if&(paint&!=&null)&{&&
&&&&&&&&&mPaint&=&&&
&&&&&&}&else&{&&
&&&&&&&&&mPaint&=&new&Paint();&&
&&&&&&&&&mPaint.setTextSize(30F);&&
&&&&&&if&(maxWidth&&&0)&{&&
&&&&&&&&&mMaxWidth&=&maxWidth&-&mP&&
&&&&&&}&else&{&&
&&&&&&&&&mMaxWidth&=&EDIT_WIDTH;&&
&&&@Override&&
&&&public&CharSequence&filter(CharSequence&source,&int&start,&int&end,&&
&&&&&&&&&Spanned&dest,&int&dstart,&int&dend)&{&&
&&&&&&float&w&=&mPaint.measureText(dest.toString()&+&source.toString());&&
&&&&&&if&(w&&&mMaxWidth)&{&&
&&&&&&&&&&&
&&&&&&&&&return&"";&&
&&&&&&return&&&
这样来使用它:
&&public&static&void&setEditTextFilter(EditText&edit)&{&&
&&&&&int&width&=&edit.getWidth();&&
&&&&&Utils.log("Uitls",&"edit&width&=&"&+&width);&&
&&&&&&&&&&
&&&&&Paint&paint&=&new&Paint();&&
&&&&&paint.setTextSize(edit.getTextSize());&&
&&&&&InputFilter[]&filters&=&{&new&MyInputFilter(paint,&width)&};&&
&&&&&edit.setFilters(filters);&&
用这样方法的优点是可以用在多个输入框中,可是有个缺点是当用联想输入法一次输入较长的中文词语或英文单词后,不会自动截断词语或单词。
(全文完)
相关资讯 & & &
& (03/23/:55)
& (02/17/:44)
& (02/17/:53)
& (02/17/:45)
& (02/17/:52)
& (02/17/:45)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Android 限制EditText只能输入数字、限制输入类型、限制输入长度的小技巧 - llixiangjian的博客 - CSDN博客
Android 限制EditText只能输入数字、限制输入类型、限制输入长度的小技巧
准确的说让Edittext只能输入数字有方法两种,都是通过xml属性设置
&&&&&&&&&&&&&android:id=&@&#43;id/u_account&&&&&&&&&&&&&&android:layout_width=&0dp&&&&&&&&&&&&&&android:layout_height=&match_parent&&&&&&&&&&&&&&android:layout_marginLeft=&13dp&&&&&&&&&&&&&&android:inputType=&phone|number&&&&&&&&&&&&&&android:maxLength=&11&&&&&&&&&&&&&&android:numeric=&integer&&&//这个属性限制只能输入数字&&&&&&&&&&&&&android:singleLine=&true&&&&&&&&&&&&&&android:textColor=&@color/hint_textcolor&&&&&&&&&&&&&&android:textSize=&14sp&&&&
&&&&&&&&&&&&&android:id=&@&#43;id/u_account&&&&&&&&&&&&&&android:layout_width=&0dp&&&&&&&&&&&&&&android:layout_height=&match_parent&&&&&&&&&&&&&&android:background=&@drawable/signup_input_pw_text_bg&&&&&&&&&&&&&&android:digits=&&&&//这个属性限制只能输入0-9这些数字&&&&&&&&&&&&&android:inputType=&phone|number&&&&&&&&&&&&&&android:maxLength=&11&&&&&&&&&&&&&&android:singleLine=&true&&&&&&&&&&&&&&android:textColor=&@color/hint_textcolor&&&&&&&&&&&&&&android:textSize=&14sp&&&&
虽然方法一二都可以,但方法一中 &android:numeric=&integer&已被官方放弃,所以不推荐使用。
使用方法而更好!与时俱进嘛!
上面是以前的博客内容;
下面补充些常用的技巧,实现方式都分为两种:
限制输入类型
代码:et_lxnr.setInputType(InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
xml:android:inputType=&number&限制输入长度(如限制输入最大长度10)
代码:et_lxnr.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
xml:android:maxLength=&10&限制输入固定的某些字符(如123456xyz)
代码:et_lxnr.setKeyListener(DigitsKeyListener.getInstance(“123456xyz”);
xml:android:digits=&@string/input_num_character&
我的热门文章在 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限制输入字符 的文章

 

随机推荐