自定义偏好主题
Customize preference theme
我目前正在尝试自定义首选项部分的颜色。但是我不知道该怎么做。
在我的应用程序中,我有两个主题:深色主题和浅色主题。这是用户选择的选项。在我的主 activity 中,我设置了用户选择的主题。
然后我使用 attr 定义要显示的颜色。
但在我的偏好片段中,我不知道如何进行。我读到我必须创建新样式,在其他线程中,解决方案是创建我的自定义 listPreference ...最好的方法是什么?
这里是黑暗主题:
例如,"year formation" 和 "group" 被禁用,所以我想显示它(更改禁用字段的颜色)
当前列表偏好:
这里我想要一个深色背景。
代码:
style.xml
<resources>
<!-- theme clair -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Color -->
<item name="colorAppBarAndDrawer">@color/colorAppBarAndDrawerLight</item>
<item name="colorBackground">@color/colorBackgroundLight</item>
<item name="colorText">@color/colorTextLight</item>
<item name="colorTextSecondary">@color/colorTextSecondaryLight</item>
<item name="colorItem">@color/colorItemLight</item>
<!-- images -->
<item name="iconRefresh">@drawable/ic_refresh_black_24dp</item>
<item name="iconFirstPage">@drawable/ic_first_page_black_24dp</item>
<item name="iconSchedule">@drawable/ic_schedule_black_24dp</item>
<!-- menu -->
<item name="android:actionMenuTextColor">@color/colorTextLight</item>
<item name="android:textColorSecondary">@color/colorTextSecondaryLight</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:textColor">@color/colorTextLight</item>
</style>
<!-- theme sombre -->
<style name="AppThemeNight" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorAppBarAndDrawer">@color/colorAppBarAndDrawerDark</item>
<item name="colorBackground">@color/colorBackgroundDark</item>
<item name="colorText">@color/colorTextDark</item>
<item name="colorItem">@color/colorItemDark</item>
<item name="colorTextSecondary">@color/colorTextSecondaryDark</item>
<!-- images -->
<item name="iconRefresh">@drawable/ic_refresh_white_24dp</item>
<item name="iconFirstPage">@drawable/ic_first_page_white_24dp</item>
<item name="iconSchedule">@drawable/ic_schedule_white_24dp</item>
<!-- menu -->
<item name="android:actionMenuTextColor">@color/colorTextDark</item>
<item name="android:textColorSecondary">@color/colorTextSecondaryDark</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:textColor">@color/colorTextDark</item>
</style>
<style name="PreferenceThemeOverlay.v14" parent="@style/PreferenceFixTheme.DayNight.NoActionBar">
<!--<item name="android:background">?attr/colorAppBarAndDrawer</item>
<item name="android:textColor">?attr/colorText</item>
<item name="android:textColorSecondary">?attr/colorTextSecondary</item>-->
<item name="colorAccent">#1976D2</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
正如我所说,我已经尝试过解决方案。我必须做什么?
非常感谢
托马斯
编辑
我将 preferenceActivity 更改为 preferenceActivityCompat,现在我可以更改开关按钮的颜色。在 style.xml 我添加了这个:
<style name="PreferenceThemeOverlay.v14" parent="@style/PreferenceFixTheme.DayNight.NoActionBar">
<!--<item name="android:background">?attr/colorAppBarAndDrawer</item>
<item name="android:textColor">?attr/colorText</item>
<item name="android:textColorSecondary">?attr/colorTextSecondary</item>-->
<item name="colorAccent">#1976D2</item>
</style>
所以我没有找到真正的解决方案。我在 Android Studio 中使用主题编辑器并使用颜色选择器选择颜色。现在可以了。我不知道是否应该将此 post 设为 "solved"?
谢谢
托马斯
我目前正在尝试自定义首选项部分的颜色。但是我不知道该怎么做。
在我的应用程序中,我有两个主题:深色主题和浅色主题。这是用户选择的选项。在我的主 activity 中,我设置了用户选择的主题。
然后我使用 attr 定义要显示的颜色。
但在我的偏好片段中,我不知道如何进行。我读到我必须创建新样式,在其他线程中,解决方案是创建我的自定义 listPreference ...最好的方法是什么?
这里是黑暗主题:
当前列表偏好:
代码: style.xml
<resources>
<!-- theme clair -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Color -->
<item name="colorAppBarAndDrawer">@color/colorAppBarAndDrawerLight</item>
<item name="colorBackground">@color/colorBackgroundLight</item>
<item name="colorText">@color/colorTextLight</item>
<item name="colorTextSecondary">@color/colorTextSecondaryLight</item>
<item name="colorItem">@color/colorItemLight</item>
<!-- images -->
<item name="iconRefresh">@drawable/ic_refresh_black_24dp</item>
<item name="iconFirstPage">@drawable/ic_first_page_black_24dp</item>
<item name="iconSchedule">@drawable/ic_schedule_black_24dp</item>
<!-- menu -->
<item name="android:actionMenuTextColor">@color/colorTextLight</item>
<item name="android:textColorSecondary">@color/colorTextSecondaryLight</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:textColor">@color/colorTextLight</item>
</style>
<!-- theme sombre -->
<style name="AppThemeNight" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorAppBarAndDrawer">@color/colorAppBarAndDrawerDark</item>
<item name="colorBackground">@color/colorBackgroundDark</item>
<item name="colorText">@color/colorTextDark</item>
<item name="colorItem">@color/colorItemDark</item>
<item name="colorTextSecondary">@color/colorTextSecondaryDark</item>
<!-- images -->
<item name="iconRefresh">@drawable/ic_refresh_white_24dp</item>
<item name="iconFirstPage">@drawable/ic_first_page_white_24dp</item>
<item name="iconSchedule">@drawable/ic_schedule_white_24dp</item>
<!-- menu -->
<item name="android:actionMenuTextColor">@color/colorTextDark</item>
<item name="android:textColorSecondary">@color/colorTextSecondaryDark</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:textColor">@color/colorTextDark</item>
</style>
<style name="PreferenceThemeOverlay.v14" parent="@style/PreferenceFixTheme.DayNight.NoActionBar">
<!--<item name="android:background">?attr/colorAppBarAndDrawer</item>
<item name="android:textColor">?attr/colorText</item>
<item name="android:textColorSecondary">?attr/colorTextSecondary</item>-->
<item name="colorAccent">#1976D2</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
正如我所说,我已经尝试过解决方案。我必须做什么?
非常感谢 托马斯
编辑 我将 preferenceActivity 更改为 preferenceActivityCompat,现在我可以更改开关按钮的颜色。在 style.xml 我添加了这个:
<style name="PreferenceThemeOverlay.v14" parent="@style/PreferenceFixTheme.DayNight.NoActionBar">
<!--<item name="android:background">?attr/colorAppBarAndDrawer</item>
<item name="android:textColor">?attr/colorText</item>
<item name="android:textColorSecondary">?attr/colorTextSecondary</item>-->
<item name="colorAccent">#1976D2</item>
</style>
所以我没有找到真正的解决方案。我在 Android Studio 中使用主题编辑器并使用颜色选择器选择颜色。现在可以了。我不知道是否应该将此 post 设为 "solved"? 谢谢 托马斯