[英]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.