繁体   English   中英

Android:在DialogPreference摘要中支持%s扩展

[英]Android: support %s expansion in DialogPreference summary

第一个问题。 很长一段时间的搜索者。

我通过扩展DialogPreference实现了timePicker首选项,就像在android文档中一样。 一切正常,我可以通过onSharedPreferenceChanged()和DialogPreference onSetInitialValue()的覆盖来设置摘要。

我的目标是始终使用其值和来自资源的其他字符串显示摘要。
例如,在我的ListPreference中,我有:

android:summary="@string/pref_list_camera_summary"

解析为:

<string name="pref_list_camera_summary">Use camera: %s</string>

在我的timePreference%s不会扩展。 我已经四处搜索,我无法弄清楚如何让dialogPreference / timePreference这样做。 可以在onSetInitalValue()中手动设置摘要,如下所示:

setSummary(getSummary() + " " + DateFormat.getTimeFormat(getContext()).format(new Date(calendar.getTimeInMillis())));

我只是不喜欢这样的暗示扩张。 感觉不干净或使用android%s范例。

我将开始挖掘listPreference代码,看看我如何将它添加到dialogPreference。 任何想法/先发制人都会很棒!

谢谢!

如果你想用android:summary自动定义的%s替换首选字符串,我认为没有这种可能性。 您应该在初始化首选项时以编程方式处理它。 您是否尝试使用String.format()来避免+连接?

String date = DateFormat.getTimeFormat(getContext())
        .format(new Date(calendar.getTimeInMillis()));

setSummary(String.format(Locale.getDefault(), 
        getContext().getString(R.string.pref_list_camera_summary), date));

如果您使用库材料首选项 ,则可以轻松完成:

listPreference.summaryFormatter = { entry, value -> "Value for $entry is $value" }

它会将ListPreference的摘要设置为Value for Weekly为7

我知道这个答案与你的问题没有很大关系。 但至少,你找到了一个可以做到的库。 使用材料首选项,您不必将%s设置为ListPreference的摘要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM