您的位置:首页 > Web前端

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

2013-01-25 15:25 513 查看
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
plaincopy

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.app.Dialog;

import android.content.DialogInterface;

import android.preference.Preference;

import android.preference.PreferenceActivity;

import android.preference.CheckBoxPreference;

import android.preference.EditTextPreference;

import android.widget.TextView;

import android.widget.EditText;

import android.text.InputFilter;

import android.text.InputType;

import android.text.Spanned;

import android.text.method.NumberKeyListener;

import android.util.Log;

import java.lang.String;

import java.lang.CharSequence;

import java.lang.Number;

import java.lang.Integer;

import java.lang.Float;

public class FmTxPreferenceChangeListener implements Preference.OnPreferenceChangeListener{



private CheckBoxPreference mCheckBox;

private EditTextPreference mEditText;

private EditText editText;

PreferenceActivity mActivity;

public FmTxPreferenceChangeListener(PreferenceActivity preferenceActivity,

CheckBoxPreference checkBoxP, EditTextPreference editTextP){

Log.d("EditTextListener","FmTxPreferenceChangeListener");

mCheckBox = checkBoxP;

mEditText = editTextP;

mActivity = preferenceActivity;

checkBoxP.setOnPreferenceChangeListener(this);

editTextP.setOnPreferenceChangeListener(this);



editText = mEditText.getEditText();

/*查阅文档发现EditTextPreference也extent了EditText,

可以通过EditTextPreference的方法getEditText()获取EditText,

然后通过调用EditText的方法InputFilter实现字符串过滤、限制输入长度

*/



editText.setFilters(new InputFilter[]{

new InputFilter(){

@Override

public CharSequence filter(CharSequence source, int start,

int end, Spanned dest, int dstart, int dend) {

// TODO Auto-generated method stub

/*这里可以作输入字符串替换的功能,如输入的是密码,可以把所有输入变成"*"号*/

return null;

}

},

new InputFilter.LengthFilter(5)/*这里限制输入的长度为5个字母*/

}

);



editText.setKeyListener(new NumberKeyListener() {

@Override

public int getInputType() {

return InputType.TYPE_MASK_VARIATION;

}

@Override

protected char[] getAcceptedChars() {/*这里实现字符串过滤,把你允许输入的字母添加到下面的数组即可!*/

return new char[]{'0', '1', '2', '3', '4', '5','6','7', '8', '9', '.'};

}

});

}

public boolean onPreferenceChange(Preference preference, Object value) {

/*当Preference改变时,这里会回调,可以判断当前改变的是CheckBoxPreference,还是CheckBoxPreference*/



return true;/**返回true表示允许改变设置,返回false表示不允许改变当前设置/

}

}







关键字:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: