我觉得我一定错过了一些东西,但我只是不明白它是什么......我有PreferenceActivity
一堆不同的偏好(有些是列表,有些只是文本字段)并且一切正常,但除非我明确地将每个项目的值写入摘要(这显然不是为此目的)我看不到这些项目如何(或在哪里)显示它们当前设置的内容。当我点击它们时,各种视图会显示正确的设置,但这显然不是本意。
我是否必须创建自己的某种自定义列表项,其中包含一个显示每个元素当前填充值的字段?
我觉得我一定错过了一些东西,但我只是不明白它是什么......我有PreferenceActivity
一堆不同的偏好(有些是列表,有些只是文本字段)并且一切正常,但除非我明确地将每个项目的值写入摘要(这显然不是为此目的)我看不到这些项目如何(或在哪里)显示它们当前设置的内容。当我点击它们时,各种视图会显示正确的设置,但这显然不是本意。
我是否必须创建自己的某种自定义列表项,其中包含一个显示每个元素当前填充值的字段?
不幸的是,默认的 PreferencesActivity 不显示这些值:如果您希望一目了然地显示所有首选项,那么您正在做的确实是正确的选择。
如果您仍想继续编程方向,请查看此线程:如何在 Preference 摘要中显示 Android Preference 的当前值?
那里应有尽有。
创建另一个首选项字段:摘要。每当更新首选项字段或显示首选项屏幕时更新它。用户将能够“更新”汇总值,但无论何时他/她输入首选项,都会显示正确的值。
对于ListPreferences
,这是内置的,您可以使用
android:summary="Actual value: %s"
对于EditTextPreferences
,您可以轻松创建自己的类:
package your.package.preference; import android.content.Context; import android.util.AttributeSet; public class EditTextPreference extends android.preference.EditTextPreference{ public EditTextPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public EditTextPreference(Context context, AttributeSet attrs) { super(context, attrs); } public EditTextPreference(Context context) { super(context); } @Override public CharSequence getSummary() { String summary = super.getSummary().toString(); return String.format(summary, getText()); } }
并在您的 xml 中使用它:
<your.package.EditTextPreference android:key="pref_alpha" android:summary="Actual value: %s" android:title="Title" android:defaultValue="default" />