国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

InputFilter全解

2019-11-09 15:25:04
字體:
來源:轉載
供稿:網友
注:InputFilter主要是對輸入的文本進行過濾的,里面只有一個filter方法
1234567891011121314151617181920212223242526272829303132333435363738394041/*********************************************輸入框關聯*********************************************************/ et02.setFilters(filter); /*********************************************調用*********************************************************/     PRivate InputFilter[] filter = new InputFilter[] {            new InputFilter() {                /**                 * @param source 輸入的文字                 * @param start 輸入-0,刪除-0                 * @param end 輸入-文字的長度,刪除-0                 * @param dest 原先顯示的內容                 * @param dstart 輸入-原光標位置,刪除-光標刪除結束位置                 * @param dend  輸入-原光標位置,刪除-光標刪除開始位置                 * @return                 */                @Override                public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {                     System.out.println("source  =="+ source+"  start====="+start+"   end======"+end+"   dest===="+dest+"  dstart==="+dstart+"  dend=="+dend);                     return null;                }            }    };  /*********************************************輸入*********************************************************/09-09 09:30:18.977 10843-10843/zp.example.zptext I/System.out: source  ==我  start=====0   end======1   dest====  dstart===0  dend==009-09 09:30:21.873 10843-10843/zp.example.zptext I/System.out: source  ==喜歡  start=====0   end======2   dest====我  dstart===1  dend==109-09 09:30:26.817 10843-10843/zp.example.zptext I/System.out: source  ==湖畔  start=====0   end======2   dest====我喜歡  dstart===3  dend==309-09 09:31:10.265 10843-10843/zp.example.zptext I/System.out: source  ==的  start=====0   end======1   dest====我喜歡湖畔  dstart===5  dend==5 /*********************************************刪除*********************************************************/09-09 09:33:08.089 10843-10843/zp.example.zptext I/System.out: source  ==  start=====0   end======0   dest====我喜歡湖畔的  dstart===5  dend==609-09 09:33:22.341 10843-10843/zp.example.zptext I/System.out: source  ==  start=====0   end======0   dest====我喜歡湖畔  dstart===4  dend==509-09 09:33:27.733 10843-10843/zp.example.zptext I/System.out: source  ==  start=====0   end======0   dest====我喜歡湖  dstart===3  dend==409-09 09:33:30.269 10843-10843/zp.example.zptext I/System.out: source  ==  start=====0   end======0   dest====我喜歡  dstart===2  dend==309-09 09:33:31.485 10843-10843/zp.example.zptext I/System.out: source  ==  start=====0   end======0   dest====我喜  dstart===1  dend==209-09 09:33:32.777 10843-10843/zp.example.zptext I/System.out: source  ==  start=====0   end======0   dest====我  dstart===0  dend==1
注:InputFilter類的使用
1234567891011121314151617181920212223private InputFilter[] filter = new InputFilter[] {            new InputFilter() {                /**                 * @param source 輸入的文字                 * @param start 輸入-0,刪除-0                 * @param end 輸入-文字的長度,刪除-0                 * @param dest 原先顯示的內容                 * @param dstart 輸入-原光標位置,刪除-光標刪除結束位置                 * @param dend  輸入-原光標位置,刪除-光標刪除開始位置                 * @return                 */                // 不讓輸入框輸入內容                @Override                public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {                    return null;                }             },            /**這里限制輸入的長度為5個字母*/            new InputFilter.LengthFilter(5),            /**輸入小寫轉換成大寫*/            new InputFilter.AllCaps()    };
實例一、
123456789      // 只要你輸入內容都會替換成“I LOVE YOU”,刪除 - 正常刪除      @Override       public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {              if (end > 0){                   return "I LOVE YOU";              }else {                   return null;              }        }
實例二、
123456// 控制不讓輸入空格,不讓輸入數字大于13位(解決手機號輸入問題)@Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {       if(source.equals(" ") || source.toString().contentEquals("/n") || dstart == 13)return "";        else return null; }
實例三、
1234       // 不讓輸入框輸入內容(禁止輸入)        @Override        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {        return dest.subSequence(dstart,dend);
實例四、類似臨摹,輸入字符正確則正常輸入,不正確則用 x 代替
1234567891011121314151617181920212223242526272829303132333435/*****************************配置************************************/private final String str = "Hello,Android!"; et03.setFilters(new InputFilter[]{ new MyInputFilter(str) }); /*****************************代碼實現************************************/ public class MyInputFilter implements InputFilter {        String str = null;         public MyInputFilter(String str) {            this.str = str;        }         @Override        public CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend) {             String ch = null;             if (dest.length() < str.length()) {                ch = str.substring(dstart + start, dstart + end);            else {                return dest.subSequence(dstart, dend);            }             if (ch.equals(src)) {                Toast.makeText(TextWatchActivity.this"match", Toast.LENGTH_SHORT).show();                return dest.subSequence(dstart, dend) + src.toString();            else {                Toast.makeText(TextWatchActivity.this"mismatch", Toast.LENGTH_SHORT).show();                return dest.subSequence(dstart, dend) + "×";            }        }     }
實例五、
1234567891011121314 /**只允許輸入某些字符*/        et03.setKeyListener(new NumberKeyListener() {             @Override            public int getInputType() {                return InputType.TYPE_MASK_VARIATION;            }             /**這里實現字符串過濾,把你允許輸入的字母添加到下面的數組即可!*/            @Override            protected char[] getAcceptedChars() {                return new char[]{'0','1','2','3'};            }        });
實例六、實時格式化金額,三位一斷
123456789101112131415161718192021222324252627282930313233/*******************************配置************************************/et03.setFilters(new InputFilter[]{lengthfilter2}); /*******************************實現************************************/ private DecimalFormat myformat = new DecimalFormat("###,###");  //金額的格式     private InputFilter lengthfilter2 = new InputFilter() {        @Override        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {            // 刪除等特殊字符,直接返回            // "".equals(source.toString():不添加會出現刪除不了內容的情況            if (source.toString() == null || source.toString().contains(".") || "".equals(source.toString())) {                return null;            }             String dValue = dest.toString();            if (dValue != null && dValue.contains(",")) {                dValue = dValue.replace(",""");            }            if (dValue != null && dValue.length() > 2 && !dValue.contains(",")) {                 String newValue = dValue + source;                String amountStr = myformat.format(Double.parseDouble(newValue));                et03.setText("");                et03.setText(amountStr);                et03.setSelection(amountStr.length());                return amountStr;            else {                return null;            }        }    };

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙陵县| 遂溪县| 罗城| 辽中县| 桂平市| 休宁县| 陇南市| 福贡县| 秦皇岛市| 同仁县| 满城县| 阿坝县| 昆山市| 曲阜市| 高唐县| 娄底市| 海阳市| 汤原县| 基隆市| 勐海县| 临安市| 麦盖提县| 西充县| 淮南市| 双流县| 嘉义市| 丰原市| 卓尼县| 西乡县| 宁夏| 南安市| 溧水县| 孝义市| 南宫市| 禹州市| 集贤县| 嵩明县| 祁连县| 蓬溪县| 巴塘县| 云阳县|