今天折腾一下那个ListPreference
,感觉还挺有意思,跟大家分享一下我的实践过程。
我对这玩意儿没啥概念,就知道它好像是用来做那种下拉列表选择的。之前看别人做的App里有那种设置选项,点一下出来一堆让你选,感觉挺方便,就想着自己也试试。
然后我就去查资料,发现这东西原来是Preference
家族的一员。说白,就是Android里专门用来做设置界面的那一套东西。ListPreference
,就是让你从一堆选项里选一个,然后它帮你把选中的东西保存下来,下次打开App还能记住。
实践开始
我先是在XML文件里鼓捣。这玩意儿跟搭积木似的,得先在布局文件里把样子搭出来。我找到一个叫PreferenceScreen
的标签,看着就像是专门用来放这些设置项的。然后在里面套一个PreferenceCategory
,就当是给我的设置项分个组。我把ListPreference
放进去。
代码大概长这样:
<PreferenceScreen xmlns:android="*/apk/res/android">
<PreferenceCategory android:title="我的设置">
<ListPreference
android:key="list_preference"
android:title="选择一个选项"
android:summary="当前选择:%s"
android:entries="@array/my_entries"
android:entryValues="@array/my_entry_values"
android:defaultValue="value2" />
</PreferenceCategory>
</PreferenceScreen>
这里面有几个地方要注意:
android:key
:这个就是给这个设置项起个名字,方便以后读取。android:title
:这个就是显示在设置界面上的标题。android:summary
:这个是标题下面的描述,我用%s
,这样可以显示当前选中的值。android:entries
:这个是显示给用户看的选项列表,我把它放在一个叫my_entries
的数组里。android:entryValues
:这个是每个选项对应的值,也放在一个叫my_entry_values
的数组里。android:defaultValue
:这个是默认值,就是用户第一次打开App时,会默认选中哪个选项。
然后,我就在文件里定义那两个数组:
<resources>
<string-array name="my_entries">
<item>选项1</item>
<item>选项2</item>
<item>选项3</item>
</string-array>
<string-array name="my_entry_values">
<item>value1</item>
<item>value2</item>
<item>value3</item>
</string-array>
</resources>
这样,XML部分就搞定,一个简单的列表选择界面就出来。实现的效果就是那种下拉框选择,可以选择选项1、选项2、选项3。
遇到的坑
实践过程中也遇到一些小坑。比如说,我一开始没搞清楚entries
和entryValues
的区别,以为它们是一样的,结果发现选中的值跟显示的不一样。后来才明白,entries
是给用户看的,entryValues
才是真正保存的值。
ListPreference
这东西还是挺实用的,尤其是在做设置界面的时候,能省不少事。下次再遇到类似的需求,我就知道该怎么做,嘿