Android EditText输入最大值提示功能

public class LengthFilter implements InputFilter {
     public LengthFilter(int max) {
         mMax = max;
     }  

     @Override
     public CharSequence filter(CharSequence source, int start, int end,
             Spanned dest, int dstart, int dend) {
         int keep = mMax - (dest.length() - (dend - dstart));  

         if (keep <= 0) {
             if (mErrorToast == null) {
                 mErrorToast = Toast.makeText(ShowDetailCommentActivity.this, R.string.comment_input_overflow,
                         Toast.LENGTH_SHORT);
             }
             mErrorToast.show();
             return "";
         } else if (keep >= end - start) {
             return null; // keep original
         } else {
             keep += start;
             if (mErrorToast == null) {
                 mErrorToast = Toast.makeText(ShowDetailCommentActivity.this, R.string.comment_input_overflow,
                         Toast.LENGTH_SHORT);
             }
             mErrorToast.show();
             if (Character.isHighSurrogate(source.charAt(keep - 1))) {
                 --keep;
                 if (keep == start) {
                     return "";
                 }
             }
             return source.subSequence(start, keep);
         }
     }  

     private int mMax;
 }  
mEditText.setFilters(new InputFilter[] { new LengthFilter(mMaxTextNum) });  

代码很少但有效,各位可以尝试一下。

作者:xzy2046,转载需注明。博客主页:http://blog.csdn.net/xzy2046

时间: 2024-11-08 21:43:28

Android EditText输入最大值提示功能的相关文章

Eclipse Android 代码自己主动提示功能

Eclipse Android 代码自己主动提示功能 Eclipse for android 实现代码自己主动提示智能提示功能.介绍 Eclipse for android 编辑器中实现两种主要文件 java 与 xml 代码自己主动提示功能,解决 eclipse 代码提示失效.eclipse 不能自己主动提示.eclipse 没有代码提示的问题.eclipse xml 自己主动提示,eclipse java 自己主动提示,eclipse 自己主动提示功能,eclipse 智能提示,eclips

Android EditText输入字数限制总结(包括中文输入内存溢出的解决方法)

限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事: (1)不同语言字符(英文.中文等)处理方式 (2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多,不同语言在不同编码中占据字节数等,不同语言在U8等编码的表示范围等,这一整块知识很丰富, 自己暂时没有理的特别顺,稍后整理再说吧. 第二点,目前主流app的处理方案也各有不同,qq5.0以前的版本,发表说说貌似是没有字数限制的(我试了一个350字左右的照样发), 5.0以后限制了,这样如果用户

Android EditText输入字数限制总结(包含中文输入内存溢出的解决方法)

转载请注明,大飞:http://blog.csdn.net/rflyee/article/details/38856539 限定EditText输入个数的解决方式非常多,可是一般主要考虑两点.也就是处理两件事: (1)不同语言字符(英文.中文等)处理方式 (2)输入字符达到数目后,是否仍然同意用户输入 第一点,涉及的东东事实上蛮多,不同语言在不同编码中占领字节数等,不同语言在U8等编码的表示范围等,这一整块知识非常丰富,自己临时没有理的特别顺.稍后整理再说吧. 第二点.眼下主流app的处理方案也

Android EditText输入最大长度限制如何给用户以友好的提示

我们知道EditText有个属性android:maxLength="xxx" ,可以设置EditText的最大长度. 也可以用如下代码设置长度,editText.setFilters( new  InputFilter[]{ new  InputFilter.LengthFilter( 50 )}); 然后我写个小示例,xml布局如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an

Android EditText输入光标居于开头最开始位置

如果欲使EditText加载后的输入光标自动处于最开始处,可以通过设置EditText的android:gravity实现,设置android:gravity为left或者start即可,可以设置: android:gravity="start" 或者: android:gravity="left"

Android EditText 输入金额(小数点后两位)

EditText mEdit = new EditText(context); InputType.TYPE_NUMBER_FLAG_DECIMAL.小数点型 InputType.TYPE_CLASS_NUMBER 整数型 设置Input的类型两种都要 mEdit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_CLASS_NUMBER); 设置字符过滤 mEdit.setFilters(new InputFilter

android EditText输入变化事件

1 editText.addTextChangedListener(new TextWatcher(){ 2 3 public void afterTextChanged(Editable s) { 4 // TODO Auto-generated method stub 5 //s:变化后的所有字符 6 Toast.makeText(getApplicationContext(), "变化:"+s, Toast.LENGTH_SHORT).show(); 7 } 8 9 public

Android EditText 输入password是否可见

设置password不可见 etAfter.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 设置password可见 etAfter.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT); 假设你是以下这样设置的是没有效果的 etAfter.setInputType(InputType.TYPE_TEXT_VARIAT

Android EditText截获与监听输入事件

Android EditText截获与监听输入事件共有2种方法: 1.第一种方法:使用setOnKeyListener(),不过这种方式只能监听硬键盘事件. edittext.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { textview.setText(edittext.getText()); return fal