Android Settings修改小记

来源:互联网 发布:rts630数据采集 编辑:程序博客网 时间:2024/04/29 09:54

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;

    }

0 0
原创粉丝点击