动态更改Android中EditText字段内的String长度

时间:2014-10-13 11:35:52

标签: java android regex android-edittext

我在我的应用程序中使用了EditText字段。

EditText用于输入ddns输入:

  e.g    www.example.com/xxxx

我想在“/”字符后将ddns id的长度限制为30个字符。

即在“/”字符后面,后面的内容必须是最多30个字符

我想动态地执行此操作并限制用户不要输入超过30个字符。

我该怎么做。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方式限制用户输入少于30个字符。

tf.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent arg0) {
        //processing part
    }
});

答案 1 :(得分:0)

一个非常快速和丑陋的答案看起来像这样:

yourEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(s.toString().contains('/') {
            if(s.toString().split('/')[1].length() == 30) {
                //By only working with the EditText:                   
                InputMethodManager imm = (InputMethodManager)
                                    getSystemService(INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                yourEditText.setFocusable(false);
                yoruEditText.setEnabled(false);

            }
        }
    }

    @Override
    public void afterTextChanged(Editable s) {

    }});

    //What i think is the best implementation, adding a TextView sitting on top of      
    //EditText with visibility set to GONE
 yourEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(s.toString().contains('/') {
                if(s.toString().split('/')[1].length() == 30) {
                    //By working with EditText and a TextView
                    yourEditText.setVisibility(View.GONE);
                    yourTextView.setVisibility(View.VISIBLE);
                    yourTextView.setText(s);
                    
                     
                }
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
            
        }});

在任何情况下,您都希望将textWatcher添加到editText并相应地进行更改。