切换DayNight切换按钮以强制主题

时间:2019-12-28 07:27:50

标签: android

我已经使用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来获取状态。

1 个答案:

答案 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);
}