Android9.0 Settings 修改踩坑记录,
问题现象

上图展示的很清楚,当系统语言为中文时,PreferenceScreen 中的折叠项 summary 描述重复显示的 bug,系统语言为英文时正常。
修改历程
先搜索 当前显示了 字符串,还真找到了
prebuilts\sdk\current\support\v7\preference\res\values-zh-rCN\values-zh-rCN.xml
"高级"
"当前显示了 %1$s 项(已添加 %2$s 项)"
"关闭"
"开启"
再接着搜索 summary_collapsed_preference_list,又找到如下的地方

看着 androidTest 相关的可以忽略,直接看 CollapsiblePreferenceGroupController.java
frameworks\support\preference\src\main\java\androidx\preference\CollapsiblePreferenceGroupController.java
private void setSummary(List collapsedPreferences) {
CharSequence summary = null;
final List parents = new ArrayList<>();
for (Preference preference : collapsedPreferences) {
final CharSequence title = preference.getTitle();
if (preference instanceof PreferenceGroup && !TextUtils.isEmpty(title)) {
parents.add((PreferenceGroup) preference);
}
if (parents.contains(preference.getParent())) {
if (preference instanceof PreferenceGroup) {
parents.add((PreferenceGroup) preference);
}
continue;
}
if (!TextUtils.isEmpty(title)) {
if (sum

本文记录了在Android 9.0系统中,修改Settings时遇到的一个bug:当系统语言为中文时,PreferenceScreen的折叠项summary重复显示。问题源于`summary_collapsed_preference_list`字符串的格式化叠加。通过分析源码,发现9.0已弃用v7包,改为使用androidx。解决方案是设置`initialExpandedChildrenCount`为最大值,以防止Preference折叠,但这会影响用户体验。
最低0.47元/天 解锁文章
1607

被折叠的 条评论
为什么被折叠?



