fix(i18n): make the language picker actually apply on device
The in-app language picker silently did nothing: AppCompatDelegate.set ApplicationLocales only syncs to the system from an AppCompatActivity, but MainActivity was a plain ComponentActivity (with a platform theme). Switch MainActivity to AppCompatActivity and base Theme.Calendula on Theme.AppCompat.DayNight.NoActionBar. Changing the locale recreates the activity; set android:windowBackground to a DayNight colour matching the Compose background (light #FBFCFE / dark #101316) so the recreation no longer flashes a contrasting backdrop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<style name="Theme.Calendula" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<!-- AppCompat (DayNight) parent so MainActivity can be an AppCompatActivity,
|
||||
which is required for AppCompatDelegate.setApplicationLocales (the in-app
|
||||
language picker) to sync to the system. Actual colours are driven by the
|
||||
Compose theme; this is essentially the launch/backdrop theme. -->
|
||||
<style name="Theme.Calendula" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||
<item name="android:windowBackground">@color/window_background</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
|
||||
Reference in New Issue
Block a user