如何更改首选项的背景颜色?

时间:2019-06-07 17:44:12

标签: android android-preferences android-settings

我有一个偏好设置活动,可以从xml资源将设置加载到我的应用中
addPreferencesFromResource(R.xml.secondary_settings); 我想以编程方式分别更改项目的背景颜色,该怎么办?

enter image description here

1 个答案:

答案 0 :(得分:0)

我的确解决了自己的问题,这要归功于我自己而不是Google。

从您对preference.getView到处的所有问题中,您都会意识到它并非无济于事,实际上,在Google的Preference的标准实现中,它毫无用处,它将每次调用时都会返回一个新视图,而旧视图(在PreferenceScreen上使用)保持不变...
因此,除非您要在android框架之外构建整个PreferenceScreen,否则此方法将毫无用处...但是我找到了解决方法

首先,它只有在使用Compat库时才有效,因此花了我一天的时间才使它起作用……

所以您的毕业证书必须:implementation "com.android.support:preference-v7:$support_library_version"
您的班级必须:public class SecondarySettingsFragment extends PreferenceFragmentCompat

迁移之后,无论您要从活动中的哪个位置获取PreferenceView,((RecyclerView)findViewById(android.support.v7.preference.R.id.recycler_view).getChildAt(index);

观察,因为它是RecycleView,它将在onCreate()期间出现零儿童,因此您必须addOnGlobalLayoutListener或从其他地方调用您的方法