我已经使用android studio的“新建”->“活动”->“设置”活动创建了偏好活动,我想在其中切换“暗/亮”主题。
<EditTextPreference
app:key="signature"
app:title="@string/signature_title"
app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="reply"
app:entries="@array/reply_entries"
app:entryValues="@array/reply_values"
app:key="reply"
app:title="@string/reply_title"
app:useSimpleSummaryProvider="true" />
<SwitchPreferenceCompat
app:key="@string/theme"
app:title="@string/theme" />
现在,在我的主题中,我有: styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
</resources>
将其更改为具有击球手状态而不是按钮状态的暗/亮。我该如何实现?
我已经检查了this个问题,但不幸的是,我无法在切换按钮中添加app:id
来获取状态。
答案 0 :(得分:0)
您需要为此see的SwitchPreferenceCompat设置侦听器 然后您可以使用以下功能切换白天/夜晚模式
public static void toggleTheme() {
int mode = AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES ? AppCompatDelegate.MODE_NIGHT_NO : AppCompatDelegate.MODE_NIGHT_YES;
AppCompatDelegate.setDefaultNightMode(mode);
}