Android Settings修改小記

1、Android Settings 大部分功能是用Preference+Fragment實現的,其架構佈局不同於普通的Android應用開發,如何在Settings  XML代碼中跳轉到某個activity呢?

 

方案:

<PreferenceScreen

   android:key="ethernet_static_ip_settings"

   android:title="@string/category_ethernet" >

   <intent

        android:action="android.intent.action.MAIN"

        android:targetPackage="com.android.settings"                                       android:targetClass="com.android.settings.ethernet.EthernetStaticIP" />

 </PreferenceScreen>

 

2、Settings 編輯框使用的是EditTextPreference,此類不同於EditText控件,不能直接對文本內容添加約束,比如限制內容爲數字,控制內容最大長度等等,如何對EditTextPreference內容約束呢?

 

方案舉例:設置EditTextPreference輸入內容爲數字或者”.”,文本內容最長爲20

 

       EditTextPreference preference = (EditTextPreference) findPreference(ip_address);

       //設置輸入法顯示風格

       preference.getEditText().setInputType(EditorInfo.TYPE_CLASS_NUMBER);      

      

       //編輯框內容監聽,輸入內容只能爲“0123456789.

       DigitsKeyListener mDigitsKeyListener = DigitsKeyListener.getInstance("0123456789.");

       preference.getEditText().setKeyListener(mDigitsKeyListener);            

      

       //添加過濾器,設置文本內容最大長度爲20

        preference.getEditText().setFilters(new InputFilter[]{

        new InputFilter.LengthFilter(20)});

 

PSEditTextPreference類中有方法getEditText(),此方法返回EditText,通過過濾器InputFilter的使用,即可實現對編輯框內容的約束

 

源碼如下:

 /**

     * Returns the {@link EditText} widget that will be shown in the dialog.

     * @return The {@link EditText} widget that will be shown in the dialog.

     */

    public EditText getEditText() {

        return mEditText;

    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章