首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在安卓系统中设置EditText的限制?

如何在安卓系统中设置EditText的限制?
EN

Stack Overflow用户
提问于 2017-12-04 17:29:30
回答 2查看 3K关注 0票数 4

如何在EditText上设置数字限制?

与最大值一样,它是30,从31设置一个Toast

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-04 17:37:06

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

首先,我建议您将其设置为.xml文件,如下所示:

代码语言:javascript
运行
复制
<EditText
    android:id="@+id/someId"
    android:maxLength="30"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
/> 

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

代码语言:javascript
运行
复制
EditText eText = (EditText)findViewById(R.id.someId);

现在您必须将Filters添加到它中,如下所示:

代码语言:javascript
运行
复制
eText.setFilters(new InputFilter[] { 
    new InputFilter.LengthFilter(30)
});

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

代码语言:javascript
运行
复制
    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

代码语言:javascript
运行
复制
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更改为:

代码语言:javascript
运行
复制
<EditText
        android:id="@+id/someId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="number"
        android:maxLength="2" />

然后按如下方式调用新类:

代码语言:javascript
运行
复制
et = (EditText)findViewById(R.id.someId);
et.addTextChangedListener(new Max30TextWatcher(et));

你完成了,你不能把一个大于30的数字:)

编码愉快!

票数 6
EN

Stack Overflow用户

发布于 2017-12-04 17:32:38

您可以在onTextChangeListener上添加EditText,在onTextChanged中,您可以检查输入的数字是否大于30。如果大于30,则可以使用适当的消息显示Toast,然后清除EditText的文本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47638816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档