【问题标题】:How to set limit for EditText in Android?如何在 Android 中设置 EditText 的限制?
【发布时间】:2017-12-04 17:29:30
【问题描述】:

如何设置EditText的数量限制?
像最大数量一样,它是 30,从 31 设置一个 Toast?

【问题讨论】:

    标签: android android-layout android-edittext


    【解决方案1】:

    如果您想检测是否有超过 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,名为 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" />
    

    你这样称呼新类:

    et = (EditText)findViewById(R.id.someId);
    et.addTextChangedListener(new Max30TextWatcher(et));
    

    你已经完成了,你不能输入高于 30 的数字 :)

    编码愉快!

    【讨论】:

    • 我正在工作@AdrianGeanta,请确保您实现的代码与我相同
    • 这有什么用?...我只想将限制设置为 30 并停在那里..我不想设置字符限制。这段代码,我认为它是用于字符的..
    • 是的...我可以在该编辑文本中写 30 个数字..对于字符我想要限制长度 2.. 而且我知道该怎么做
    • 我有一个示例演示,当我尝试输入 31 个字符时,它没有输入任何内容...显示您的代码
    • @AdrianGeanta 是您要找的?
    【解决方案2】:

    您可以在EditTextonTextChanged 内添加onTextChangeListener,您可以检查输入的数字是否大于30。如果大于 30,则可以显示Toast 和相应的消息,然后清除EditText 的文本

    【讨论】:

    • 这是我可以在edittext中放入多少个字符的限制。我想要别的东西
    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多