现在的位置: 首页 > 综合 > 正文

如何限制edittext输入字数 3种方法的

2013年08月26日 ⁄ 综合 ⁄ 共 3786字 ⁄ 字号 评论关闭

Android EditText 字符个数限制

方法一:

 mEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(Constants.MAX_TEXT_INPUT_LENGTH)});

 

方法二:这个方法虽然复杂点,但我更偏向使用这种方法。

 private TextWatcher mTextWatcher = new TextWatcher(){

  Toast mToast = null;

  public void beforeTextChanged(CharSequence s, int start, 

    int count,int after) {

  }

  public void onTextChanged(CharSequence s, int start, 

    int before,int count) {

  }

  

  public void afterTextChanged(Editable s) {

   int nSelStart = 0;

   int nSelEnd = 0;

   boolean nOverMaxLength = false;

   

   nSelStart = mEditText.getSelectionStart();

   nSelEnd   = mEditText.getSelectionEnd();

   

   nOverMaxLength = (s.length() > Constants.MAX_TEXT_INPUT_LENGTH) ? true : false;

   if(nOverMaxLength){

    if(null == mToast){

     mToast = Toast.makeText(mContext, 

       R.string.IDS_MSG_TEXT_OVER_MAXLENGTH, 

       Toast.LENGTH_SHORT);

    }

    mToast.show();

    

    s.delete(nSelStart - 1, nSelEnd);

    mEditText.setTextKeepState(s);//请读者注意这一行,保持光标原先的位置,
mEditText.setText(s)会让光标跑到最前面,

                                                    
//就算是再加
mEditText.setSelection(nSelStart) 也不起作用

    }

  }

 };

 

 

 

android editText 输入字数限制
2011-01-04 18:04

方法一:

         // 输入框限制输入字数

        editText.addTextChangedListener(new TextWatcher() {

            private CharSequence temp;

            private boolean isEdit = true;

            private int selectionStart ;

            private int selectionEnd ;

            @Override

            public void beforeTextChanged(CharSequence s, int arg1, int arg2,

                    int arg3) {

                temp = s;

            }

            

            @Override

            public void onTextChanged(CharSequence s, int arg1, int arg2,

                    int arg3) {

            }

            

            @Override

            public void afterTextChanged(Editable s) {

                 selectionStart = editText.getSelectionStart();

                selectionEnd = editText.getSelectionEnd();

                Log.i("gongbiao1",""+selectionStart);

                if (temp.length() > Constant.TEXT_MAX) {

                    Toast.makeText(KaguHomeActivity.this,

                            R.string.edit_content_limit, Toast.LENGTH_SHORT)

                            .show();

                    s.delete(selectionStart-1, selectionEnd);

                    int tempSelection = selectionStart;

                    editText.setText(s);

                    editText.setSelection(tempSelection);

                }

            }



        });



      方法二:

         利用EditText可以设置filter的特性,自定义一个LengthFilter,当输入字数超过限制时 ,做出自定义的提示

          // 输入框限制输入字数

        InputFilter[] filters = new InputFilter[1];

        filters[0] = new InputFilter.LengthFilter(Constant.TEXT_MAX) {

            @Override

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

                    Spanned dest, int dstart, int dend) {

                if (source.length() > 0 && dest.length() == Constant.TEXT_MAX) {

                    if ((System.currentTimeMillis() - toastTime) > interval) {

                        toastTime = System.currentTimeMillis();

                        Toast

                                .makeText(KaguHomeActivity.this,

                                        R.string.edit_content_limit,

                                        Toast.LENGTH_SHORT).show();

                    }

                }

                if (dest.toString().equals(

                        getResources().getString(R.string.input_default_txt))) {

                    Bundle data = new Bundle();

                    data.putCharSequence("source", source);

                    Message message = textHandler.obtainMessage();

                    message.setData(data);

                    message.sendToTarget();

                }


                return super.filter(source, start, end, dest, dstart, dend);

            }

        };

        editText.setFilters(filters);

private Handler textHandler = new Handler() {

        @Override

        public void handleMessage(Message msg) {


            Bundle data = msg.getData();

            CharSequence source = data.getCharSequence("source");

            editText.setTextColor(Color.BLACK);

            editText.setText(source);

            editText.setSelection(source.length());

        }

    };
【上篇】
【下篇】

抱歉!评论已关闭.