Я делаю проект, в котором я думал о предоставлении «Локализация» и «Темный режим» для пользователей.
Для достижения локализации -> я определил разные строковые ресурсы для разных локалей в значениях -bn, values-es, values-hi, values-in и т. Д.
Для изменения локали вручную, я использовал этот код ->
Locale l = new Locale("our_locale_string");//It may be en,hi,.. etc.
Locale.setDefault(l);
Configuration config = new Configuration();
config.locale = l;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
Я использовал два файла styles.xml для переключения между темами
Для светлой темы:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="cardViewStyle">@style/CardView</item>
<item name="android:windowBackground">@android:color/white</item>
</style>
Для темногоtheme:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="cardViewStyle">@style/CardView</item>
<item name="android:windowBackground">@android:color/black</item>
</style>
Для изменения темы в общем приложении я использую ->
if (mode) { //mode is a boolean variable to toggle b/n themes
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}
Я могу добиться локализации в светлой теме, а также я могу изменить натемный режим для общего приложения. Здесь возникает проблема, когда я меняю тему, соответствующие строки не используются, вместо этого используется стандартный strings.xml (обычно английский). Как я могу сделать это, чтобы использовать соответствующий языковой стандарт strings.xml.
Моя структура каталогов ресурсов в «представлении проекта»
res / values res / values-hi res / values-zh. ,,res / values-es и для ночного режима у меня есть res / values-night / styles.xml
Я также попытался создать файлы ресурсов в режиме nigth для каждого из приведенных выше различных строковых файлов в папках values-xxнапример, значения-привет-ночь, но это не работает.