Android Settings修改小記

1、Settings代碼中大部分UI用Fragment+Preference方式呈現,如何在XML中設置點擊子選項跳轉到某個activity?

方案舉例:

<PreferenceScreen

android:title="@string/upgrade_by_local"

android:summary="@string/upgrade_summary">

<!-- 點擊時 自定義一個默認跳轉Intent action -->

<!-- action指定隱式Intent ; targetPackage和targetClass指定顯示Intent-->

<intent

Advertisements

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

android:targetPackage="com.android.settings"

android:targetClass="com.android.settings.upgrade.SystemLocalUpgradeActivity" />

</PreferenceScreen>

2、Settings中的編輯框使用的是EditTextPreference,此類不能像EditText一樣直接添加文本控制屬性,如設置輸入內容長度、數據類型等,如何控制編輯框裡面輸入內容屬性?

方案舉例:設置文本內容為數字類型,且只能監聽數字和".",文本長度

Advertisements

EditTextPreference preference = (EditTextPreference) findPreference("ip_address");

//設置輸入法顯示風格

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

//設置按鍵監聽內容

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

preference.getEditText().setKeyListener(mDigitsKeyListener);

//設置內容最大長度

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

new InputFilter.LengthFilter(20)});

PS:EditTextPreference源碼中有個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;

}

Advertisements

你可能會喜歡