阅读260 返回首页    go 阿里云 go 技术社区[云栖]


Android TextView的字符过滤功能

 TextView可以设置接受各式各样的字符,通过过滤指定的字符来满足不同应用的输入和显示要求。

 

通过xml配置:

android:InputType

number                               接受整数输入

numberSigned                  接受有符号整数输入

numberDecimal                接受整数和小数的输入

 

android:digits

指定接受固定的数字,如android:digits="012345",则只接受0~5数字的输入

 

android:numberic

integer                                 接受整数输入

signed                                 接受有符号整数输入

decimal                               接受整数和小数输入

 

 

通过java代码设置

其实以上3个属性,功能有点重复,最终都是通过java代码来对TextView设置KeyListener

KeyListener是一个接口,提供了对输入键盘按键的监听

InputFilter是一个接口,提供了对字符的过滤

android提供了实现了KeyListener和InputFilter的NumberKeyListener,而DigitsKeyListener继承了NumberKeyListener

 

[c-sharp] view plaincopy
  1. TextView tv = new TextView(context);  
  2. //只接受整数输入  
  3. KeyListener l = new DigitsKeyListener(fasle,false);  
  4. //接受有符号整数输入  
  5. KeyListener l = new DigitsKeyListener(true,false);  
  6. //接受小数,整数输入  
  7. KeyListener l = new DigitsKeyListener(false,true);  
  8. //接受有符号整数/小数输入  
  9. KeyListener l = new DigitsKeyListener(true,true);  
  10. tv.setKeyListener(l);  
 

 

如果想要实现更大自由度的过滤定制,可以自己写一个KeyListener(继承BaseKeyListener)并实现InputFilter,重写filter()函数,在filter()函数里可以实现自由的过滤。


在Android中,让你的EditText只接受你指定的字符,可以用以下办法实现:
    NumberKeyListener myKeyListener =
         new NumberKeyListener() {
            public int getInputType() {
                //指定键盘类型
                 return InputType.TYPE_CLASS_TEXT;
             }
         
             protected char[] getAcceptedChars() {
                //指定你所接受的字符
                return "abcdefg".toCharArray();
             }
         };
         
        EditText tv = (EditText)findViewById(R.id.testEdit);
        tv.setKeyListener(myKeyListener);
        
你可以将字符串"abcdefg"换成任意的,你想让你的EditText所接受的字符组合。

最后更新:2017-04-04 07:03:44

  上一篇:go iOS6.1 beta 固件下载
  下一篇:go How to run (git/ssh) authentication agent?