簡體   English   中英

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

[英]How to set limit for EditText in Android?

如何在EditText上設置數字限制?
像最大數字一樣是30,從31開始設置Toast

如果您想檢測是否超過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

你的問題很難理解,但是,是的,最后我找到了你,你很幸運我一年前做過類似的事情......

首先創建一個名為Max30TextWatcher (或任何名稱)的inner class

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 :)

快樂的編碼!

您可以添加onTextChangeListenerEditText和內部onTextChanged ,你可以檢查,如果輸入的數字大於30與否。 如果它大於30,您可以顯示帶有適當消息的Toast ,然后清除EditText的文本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM