gpt4 book ai didi

android - 如何在Android中更改PreferenceScreen的文本颜色和背景颜色

转载 作者:行者123 更新时间:2023-12-02 13:28:26 27 4
gpt4 key购买 nike

如何在由 PreferenceFragmentCompat 夸大的PreferenceScreen中更改文本和背景颜色?
尝试过How to change the text color of PreferenceCategory/PreferenceScreen,但是该解决方案只能在Preference Activity中使用,而不能在PreferenceFragmentCompat中使用。
还尝试按照How to change text color of preference category in Android?在首选项屏幕中使用布局标签,但不保存首选项。

class FragmentSettings: PreferenceFragmentCompat() {

private lateinit var viewModel: SharedViewModel

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.root_preferences)

val application = requireNotNull(this.activity).application
val dataBase = DataBase.getInstance(application)
val repo = Repo(dataBase!!)

viewModel = ViewModelProvider(this,
SharedViewModelFactory(
dataBase
)
).get(SharedViewModel::class.java)

(activity as MainActivity).supportActionBar?.title = "Settings"
}

这是我的settingsPreference.xml中的代码。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorExtra"
android:backgroundTint="@color/colorExtra">

<PreferenceCategory android:layout="@layout/pref_title" app:title="@string/location_header">

<SwitchPreferenceCompat
android:background="@color/colorExtra"
android:backgroundTint="@color/colorExtra"
app:defaultValue="true"
android:layout= "@layout/switch_pref_item"
app:disableDependentsState="true"
app:key="USE_DEVICE_LOCATION"
app:summary="Allow the app to get your location"
app:title="@string/your_location_title" />

<EditTextPreference
android:background="@color/colorExtra"
android:backgroundTint="@color/colorExtra"
app:dependency="USE_DEVICE_LOCATION"
app:key="setLocation"
android:layout="@layout/set_location_pref"
app:title="@string/set_location_title"
app:useSimpleSummaryProvider="true" />


</PreferenceCategory>

</PreferenceScreen>

最佳答案

这应该通过样式来完成,并遵循用于样式化任何布局的相同过程。这不是通过首选项xml完成​​的。
制作一个XML样式,该样式是Theme.AppCompat的子级。然后,您可以覆盖android:windowBackgroundandroid:textColor的颜色。您可以将此样式应用于 list 中的 Activity 。
例如,在styles.xml中:

<color name="preferencesTextColor">$ff0000</color>
<color name="preferencesBackgroundColor">#202020</color>

<style name="MyPreferencesTheme" parent="Theme.AppCompat">
<item name="android:textColor">@color/preferencesTextColor</item>
<item name="android:windowBackground">@color/preferencesBackgroundColor</item>
</style>
然后在 list 中,将主题应用于 Activity :
<activity android:name="MyPreferencesActivity"
android:theme="@style/MyPreferencesTheme"
android:label="@string/myPreferenceActivityLabel" />

关于android - 如何在Android中更改PreferenceScreen的文本颜色和背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62986347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com