閱讀178 返回首頁    go 阿裏雲 go 技術社區[雲棲]


EditTextPreference InputFilter過濾字符串及限製長度的實現

https://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
  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設置文本類型

https://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

最後更新:2017-04-04 07:03:41

  上一篇:go Markdown
  下一篇:go 常用Maven插件介紹(下)