EditTextPreference InputFilter过滤字符串及限制长度的实现

http://blog.csdn.net/hunhunzi/article/details/6225216

公司要求在Android Settings(设置)程序下的“无线和网络”下增加FM发射的菜单,主要实现FM设备打开/关闭、设置发射频率几个简单功能。其中有个问题是,输入发射频率时,只能输入数值87.0~108.0的数值范围,我想在程序中限制只能输入5个字母,只允许输入以下字母:

{'0', '1', '2', '3', '4', '5','6','7', '8', '9', '.'}

代码实现如下:

 

[java] view
plain
copy

  1. import android.app.AlertDialog;  
  2. import android.app.AlertDialog.Builder;  
  3. import android.app.Dialog;  
  4. import android.content.DialogInterface;  
  5. import android.preference.Preference;  
  6. import android.preference.PreferenceActivity;  
  7. import android.preference.CheckBoxPreference;  
  8. import android.preference.EditTextPreference;  
  9. import android.widget.TextView;  
  10. import android.widget.EditText;  
  11. import android.text.InputFilter;  
  12. import android.text.InputType;  
  13. import android.text.Spanned;  
  14. import android.text.method.NumberKeyListener;  
  15. import android.util.Log;  
  16. import java.lang.String;  
  17. import java.lang.CharSequence;  
  18. import java.lang.Number;  
  19. import java.lang.Integer;  
  20. import java.lang.Float;  
  21. public class FmTxPreferenceChangeListener implements Preference.OnPreferenceChangeListener{  
  22.       
  23.     private CheckBoxPreference mCheckBox;  
  24.     private EditTextPreference mEditText;  
  25.     private EditText editText;  
  26.     PreferenceActivity mActivity;  
  27.     public FmTxPreferenceChangeListener(PreferenceActivity preferenceActivity,   
  28.             CheckBoxPreference checkBoxP, EditTextPreference editTextP){  
  29.         Log.d("EditTextListener","FmTxPreferenceChangeListener");  
  30.         mCheckBox = checkBoxP;  
  31.         mEditText = editTextP;  
  32.         mActivity = preferenceActivity;  
  33.         checkBoxP.setOnPreferenceChangeListener(this);  
  34.         editTextP.setOnPreferenceChangeListener(this);  
  35.           
  36.         editText = mEditText.getEditText();  
  37.         /*查阅文档发现EditTextPreference也extent了EditText, 
  38.         可以通过EditTextPreference的方法getEditText()获取EditText, 
  39.         然后通过调用EditText的方法InputFilter实现字符串过滤、限制输入长度 
  40.         */  
  41.           
  42.         editText.setFilters(new InputFilter[]{  
  43.                 new InputFilter(){  
  44.                     @Override  
  45.                     public CharSequence filter(CharSequence source, int start,  
  46.                             int end, Spanned dest, int dstart, int dend) {  
  47.                         // TODO Auto-generated method stub  
  48.                         /*这里可以作输入字符串替换的功能,如输入的是密码,可以把所有输入变成"*"号*/  
  49.                         return null;  
  50.                     }  
  51.                 },  
  52.                 new InputFilter.LengthFilter(5)/*这里限制输入的长度为5个字母*/  
  53.         }                                         
  54.         );  
  55.           
  56.         editText.setKeyListener(new NumberKeyListener() {  
  57.              @Override  
  58.              public int getInputType() {  
  59.               return InputType.TYPE_MASK_VARIATION;  
  60.              }             
  61.              @Override  
  62.              protected char[] getAcceptedChars() {/*这里实现字符串过滤,把你允许输入的字母添加到下面的数组即可!*/  
  63.               return new char[]{'0', '1', '2', '3', '4', '5','6','7', '8', '9', '.'};  
  64.              }  
  65.             });       
  66.     }  
  67.     public boolean onPreferenceChange(Preference preference, Object value) {  
  68.         /*当Preference改变时,这里会回调,可以判断当前改变的是CheckBoxPreference,还是CheckBoxPreference*/  
  69.           
  70.         return true;/**返回true表示允许改变设置,返回false表示不允许改变当前设置/  
  71.     }  
  72. }  

 



 

 

关键字:

EditTextPreference InputFilter过滤字符串的实现,

EditTextPreference InputFilter过滤输入字符串的实现,

EditTextPreference InputFilter限制输入长度,

EditTextPreference InputFilter输入替换的实现,

EditTextPreference CheckBoxPreference共用PreferenceChangeListener

android:inputType设置文本类型

http://www.cnblogs.com/mimi1/archive/2012/09/27/2705513.html

android:hintText为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色
android:inputType设置文本的类型,用于帮助输入法显示合适的键盘类型。

    android:hintText="这里提示你该输入什么内容"
    android:inputType="none"
    android:inputType="text"
    android:inputType="textCapCharacters"
    android:inputType="textCapWords"
    android:inputType="textCapSentences"
    android:inputType="textAutoCorrect"
    android:inputType="textAutoComplete"
    android:inputType="textMultiLine"
    android:inputType="textImeMultiLine"
    android:inputType="textNoSuggestions"
    android:inputType="textUri"
    android:inputType="textEmailAddress"
    android:inputType="textEmailSubject"
    android:inputType="textShortMessage"
    android:inputType="textLongMessage"
    android:inputType="textPersonName"
    android:inputType="textPostalAddress"
    android:inputType="textPassword"
    android:inputType="textVisiblePassword"
    android:inputType="textWebEditText"
    android:inputType="textFilter"
    android:inputType="textPhonetic"
    android:inputType="number"
    android:inputType="numberSigned"
    android:inputType="numberDecimal"
    android:inputType="phone"//拨号键盘
    android:inputType="datetime"
    android:inputType="date"//日期键盘

端口 SIPPort 整型 [1024,65535] 5060 赵超找业软weijianmiao确认?
对端号码 VideoCollPeerNumber 字符串 [1,2,3,4,5,6,7,8,9,0],最大13位 一般是调度台号码,例如1002
时间: 2024-08-17 10:20:27

EditTextPreference InputFilter过滤字符串及限制长度的实现的相关文章

python过滤字符串中不属于指定集合中字符的类实例

  本文实例讲述了python过滤字符串中不属于指定集合中字符的类.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # -*- coding: utf-8 -*- import sets class Keeper(object): def __init__(self, keep): self.keep = sets.Set(map(ord, keep)) def __getitem__(self, n): if n

jQuery实现字符串按指定长度加入特定内容的方法

 这篇文章主要介绍了jQuery实现字符串按指定长度加入特定内容的方法,实例分析了jQuery操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery实现字符串按指定长度加入特定内容的方法.分享给大家供大家参考.具体分析如下: 最近的一个项目中需要将手机号码按一定长度用标识符隔开,便于阅读,网上找了一会发现没有合适的代码于是就自己手写了一个函数,可以按指定长度往字符串中插入分隔符,有需要的朋友可以拿去. ? 1 2 3 4 5 6 7 8 9 10 11

怎么测字符串数组的长度

问题描述 怎么测字符串数组的长度 char a[][10]={""qwe""as""ssdc""asdfx""},怎么测这个长度,尽可能详细点,谢谢 解决方案 不是就是10吗,没有写的不是默认是 解决方案二: 如果是测试出实际存放的,那就通过循环,如果不是,计数器加1 解决方案三: char b[][10]={""aaa""bb""'c'}; in

c++-关于字符串数组的长度问题

问题描述 关于字符串数组的长度问题 #includeusing namespace std; int main(){ int length; char onearray[6] = {'a''d''r''y''b'}; length = strlen(onearray); cout << ""the length of the array is:"" << length << endl; return 0;} 如果数组是onearr

正则-字符串按指定长度分割工具

问题描述 字符串按指定长度分割工具 这个图片的工具是什么,有谁知道吗?可以按不定长度分隔字符串的,好像是一个正则的网站. 解决方案 没看出你这个图,跟 长度 有什么关系 解决方案二: 有一行字符串,含有28个字段,每个字段都是固定长度的.这个图片是分隔之后的. 解决方案三: 按照指定显示长度分割字符串按照指定长度分割一个字符串用正则表达式按指定长度分割字符串(C#)

《Python Cookbook(第2版)中文版》——1.10 过滤字符串中不属于指定集合的字符

1.10 过滤字符串中不属于指定集合的字符 任务 给定一个需要保留的字符的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案 对于此类问题,string对象的translate方法是又快又好用的工具.不过,为了有效地使用translate来解决问题,事先我们必须做一些准备工作.传递给translate的第一个参数是一个翻译表:在本节中,我们其实不需要什么翻译,所以我们必须准备一个特制的参数来指明"无须翻译".第二个参数

检测含有中文字符串的实际长度_基础应用

我们在实际过程中要经常去检测含有中文字符串的实际长度, 因为中文字符,和英文字符在一起的话.判断起来你麻烦点. 原理跟在asp中的一样.逐个去判断.是中文加2英文加1. 复制代码 代码如下: ASCIIEncoding n = new ASCIIEncoding(); byte[] b = n.GetBytes(str); int l = 0; // l 为字符串之实际长度 for (int i=0;i <= b.Length-1;i++) { if (b[i] ==63) //判断是否为汉字或

获取中文字符串的实际长度代码_javascript技巧

JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <

php实现过滤字符串中的中文和数字实例_php技巧

本文实例讲述了php实现过滤字符串中的中文和数字.分享给大家供大家参考.具体实现方法如下: function getChinese($string,$encode="GBK") { switch($encode){ case "GBK" :$codelength=2;break; case "GB2312" :$codelength=3;break; case "UTF-8" :$codelength=3;break; cas