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)});
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;
}