記錄工作中可能會用到的——Editext 指定最大長度,超出時進行toask提示。

public class MainActivity extends AppCompatActivity {
    private EditText editText;
    private Toast toast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.edi_pass);

        editText.setFilters(new InputFilter[]{new MaxTextLengthFilter(3)});

    }

    //自定義過濾,對每一個輸入的值進行過濾
    class MaxTextLengthFilter implements InputFilter {
    //最大有效長度
        private int mMaxLength;

        public MaxTextLengthFilter(int max) {
            mMaxLength = max;
            toast = Toast.makeText(MainActivity.this, "字符不能超過3個", Toast.LENGTH_SHORT);

        }
       //filter 過濾 將輸入的值進行變換,輸出想要的值 
      //source  剛輸入的值 ;
      //dest    顯示在editext上的值
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
       //keep  還能輸入幾個值
       //其他int值沒測試明白
            int keep = mMaxLength - (dest.length() - (dend - dstart));
       // end-star 表示剛纔按鍵輸入了幾個值    字符=1;漢字=漢字的個數
            if (keep < (end - start)) {
                toast.show();
            }
            if (keep <= 0) {
                return "";
            } else if (keep >= end - start) {
                return null;//保持原樣不變化
            } else {
                return source.subSequence(start, start + keep);
            }
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章