android - 将 targetSdkVersion 设置为 28 后,PreferenceFragmentCompat 样式被破坏。
问题描述
嘿,在我升级到 sdk 版本 28 之前,我的 PreferenceFragmentCompat 看起来不错。但是升级后,它的样式被破坏了,我似乎无法修复它。为什么是原因,我该如何解决?
这是我的应用风格:
<style name="MyMaterialTheme0" parent="MyMaterialTheme0.Base"/>
<style name="MyMaterialTheme0.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/colorPrimary0</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark0</item>
<item name="colorAccent">@color/colorAccent0</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
</style>
解决方案
以下是PreferenceThemeOverlay.v14.Material和PreferenceThemeOverlay之间的差异变化。注意新的allowDividerAbove、allowDividerBelow和iconSpaceReserved属性。在更新之前,我必须修改我的样式以匹配:
<style name="AppSettingsTheme" parent="PreferenceThemeOverlay">
<item name="preferenceCategoryStyle">@style/AppSettings.Category.Material</item>
<item name="preferenceFragmentCompatStyle">@style/AppSettings.Fragment.Material</item>
<item name="preferenceStyle">@style/AppSettings.Preference.Material</item>
</style>
<style name="AppSettings.Category.Material" parent="Preference.Category.Material">
<item name="allowDividerAbove">false</item>
<item name="allowDividerBelow">false</item>
<item name="iconSpaceReserved">false</item>
</style>
<style name="AppSettings.Fragment.Material" parent="PreferenceFragment.Material">
<item name="allowDividerAfterLastItem">true</item>
</style>
<style name="AppSettings.Preference.Material" parent="Preference.Material">
<item name="allowDividerAbove">true</item>
<item name="allowDividerBelow">true</item>
<item name="iconSpaceReserved">false</item>
</style>
并将您的preferenceTheme更新为@style/AppSettingsTheme值而不是@style/PreferenceThemeOverlay.v14.Material
推荐阅读
- slurm - 在 SLURM 步骤中获取可用内存
- python - 如何获取对象的属性,条件是该对象的另一个属性
- jquery - 在 MVC5 Url.Content() 中放置一个 JS 变量
- python - 使用 fastT5 将 T5 模型导出到 onnx 时,得到“RuntimeError:形状为 [5, 8, 1, 2] 的输出与广播形状 [5, 8, 2, 2] 不匹配”
- python - python中的独立模拟:pytest
- r - 为什么我会得到另一个版本的表格?
- java - 运行jar应用程序时如何在某处记录错误信息
- excel - Excel VBA循环使用给定字符串的文件
- javascript - 如何从每一行中选择一个选项并禁用底行单选按钮
- sql-server - Microsoft Report Builder - 使用 Jira 数据源?