Android edittext InputFilter 输入控制

2022-01-10 14:56:07 浏览数 (1)

InputFilter 可能需要对用户的输入进行一些限制,可以为EditText Widget设置一个InputFilter以实现这一功能

如:

代码语言:javascript复制
/*
         * 使用输入过滤器约束用户输入
         * (只能输入两个大写字母)
         * setFilters方法需要调用一个InputFilter对象数组。
         * 本例中将所有输入的小写字母自动转换为大写字母,而且被限定在
         * 两个字符
         */
        final EditText text_f = (EditText)findViewById(R.id.editText01);
        text_f.setFilters(new InputFilter[]{
                        new InputFilter.AllCaps(),
                        new InputFilter.LengthFilter(2)
        });

下例 小数点后两位

代码语言:javascript复制
private void initEt() {
		tv1=(EditText) findViewById(R.id.et1);
		tv2=(EditText) findViewById(R.id.et2);
		tv1.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
		tv2.setTransformationMethod(PasswordTransformationMethod.getInstance());
		String s="adb";
		tv1.setTextKeepState(s);
		tv2.setText(s);
		tv1.setFilters(new InputFilter[] { lengthfilter });
 
	}
	// 设置小数位数控制
			InputFilter lengthfilter = new InputFilter() {
				public CharSequence filter(CharSequence source, int start, int end,
						Spanned dest, int dstart, int dend) {
					System.out.println(source.toString() "-->" start "-->" end);
					System.out.println(dest.toString() "-->" dstart "-->" dend);
					// 删除等特殊字符,直接返回
					if ("".equals(source.toString())) {
						return null;
					}
					String dValue = dest.toString();
					String[] splitArray = dValue.split("\.");
					if (splitArray.length > 1) {
						String dotValue = splitArray[1];
						int diff = dotValue.length()   1 - 2;
						if (diff > 0) {
							CharSequence c=source.subSequence(start, end - diff);
							System.out.println(c.toString());
							return c;
						}
					}
					return null;
				}
			};

0 人点赞