如何在Android中设置EditText的限制?

Adr*_*nta 3 android android-layout android-edittext

如何设置数字限制EditText
像最大数字那样是30,从31集开始Toast

Ski*_*ᴉʞS 6

如果您想检测是否超过30个字符,这是一个答案

首先,我建议您.xml按如下方式在文件中进行设置:

<EditText
    android:id="@+id/someId"
    android:maxLength="30"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
/> 
Run Code Online (Sandbox Code Playgroud)

然后在onCreate()你必须初始化它,如下所示:

EditText eText = (EditText)findViewById(R.id.someId);
Run Code Online (Sandbox Code Playgroud)

现在你必须添加Filters如下:

eText.setFilters(new InputFilter[] { 
    new InputFilter.LengthFilter(30)
});
Run Code Online (Sandbox Code Playgroud)

最后你添加一个TextWatcher()来处理它如下:

    eText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(count >= 30) Toast.makeText(MainActivity.this, "Max length of EditText is "+ String.valueOf(30), Toast.LENGTH_SHORT).show();

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
Run Code Online (Sandbox Code Playgroud)

有一个答案可以检测用户是否尝试将数字设置为高于n

你的问题很难理解,但是,是的,最后我找到了你,你很幸运我一年前做过类似的事情......

你首先创建这个inner classMax30TextWatcher(或任何名称)

public class Max30TextWatcher implements TextWatcher {

        private EditText et;

        Max30TextWatcher(EditText et) {
            this.et = et;
        }

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {
            if(TextUtils.isEmpty(editable.toString())){
                return;
            }
            try {
                if (Integer.valueOf(et.getText().toString()) > 30) {
                    Toast.makeText(MainActivity.this, "Max is 30 dawg", Toast.LENGTH_SHORT).show();
                    //put all the TextView ""
                    et.setText("");

                }
            }
            catch(NumberFormatException e){
                //no dots and comma accepted
                et.setText("");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以你改成了.xml这个:

<EditText
        android:id="@+id/someId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:maxLength="2" />
Run Code Online (Sandbox Code Playgroud)

你按如下方式调用新类:

et = (EditText)findViewById(R.id.someId);
et.addTextChangedListener(new Max30TextWatcher(et));
Run Code Online (Sandbox Code Playgroud)

你完成了,你不能把数字高于30 :)

快乐的编码!