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

时间:2017-12-04 17:29:31

标签: android android-layout android-edittext

如何在EditText上设置数字限制?
像最大数字一样,它是30,从31设置Toast

2 个答案:

答案 0 :(得分:6)

  

如果你想检测是否有超过30个字符

,这是一个答案

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

<EditText
    android:id="@+id/someId"
    android:maxLength="30"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
/> 

然后在你的onCreate()中,你必须按照以下方式进行初始化:

EditText eText = (EditText)findViewById(R.id.someId);

现在您必须按如下方式添加Filters

eText.setFilters(new InputFilter[] { 
    new InputFilter.LengthFilter(30)
});

最后你添加一个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

        }
    });
  

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

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

首先创建名为inner class的{​​{1}}(或任何名称)

Max30TextWatcher

所以你将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(""); } } } 更改为:

.xml

你按照以下方式调用新课程:

<EditText
        android:id="@+id/someId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:maxLength="2" />

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

快乐的编码!

答案 1 :(得分:1)

您可以在onTextChangeListenerEditText内添加onTextChanged,您可以检查输入的数字是否大于30。如果大于30,您可以显示带有相应消息的Toast,然后清除EditText

的文字