Переключение темы DayNight Android Xamarin - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь внедрить темную тему в мое приложение android, используя тему android daynight. В настоящее время он меняет тему, но я не думаю, что он воссоздает активность так, как я хочу. В java у них есть AppCompatDelegate.setDefaultNightMode(), который, по-видимому, теперь автоматически воссоздает действие, но я не могу найти c# способ сделать это в xamarin android?

Моя текущая реализация:

switch (selectedSpinnerItem)
{
    case "Light":
        ((AppCompatActivity)Activity).Delegate.SetLocalNightMode(AppCompatDelegate.ModeNightNo);
        break;
    case "Dark":
        ((AppCompatActivity)Activity).Delegate.SetLocalNightMode(AppCompatDelegate.ModeNightYes);
        break;
    case "System Preference":
        ((AppCompatActivity)Activity).Delegate.SetLocalNightMode(AppCompatDelegate.ModeNightFollowSystem);
         break;
 }

Я не думаю, что это правильный способ сделать это.

1 Ответ

0 голосов
/ 03 апреля 2020

Прежде всего, ваш код только что работал в Android Q. https://developer.android.com/guide/topics/ui/look-and-feel/darktheme#force_dark

Если вы хотите, чтобы он работал, вы можете добавить <item name="android:forceDarkAllowed">true</item> в свой styles.xml как и следующий код.

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:forceDarkAllowed">true</item>
    </style>

</resources>

Я установил его, используя ((AppCompatActivity)this).Delegate.SetLocalNightMode(AppCompatDelegate.ModeNightYes); в OnCreate методе. Здесь работает sceenshot.

enter image description here

Обновление

Когда я изменю тему, будет создана активность. enter image description here

Вот мое демо. https://github.com/851265601/Xamarin.Android_ListviewSelect/blob/master/App16.zip

...