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', '.'}
代码实现如下:
- 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
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 |