Android - язык WebView резко меняется на Android N

У меня есть многоязычное приложение с основным языком английский и дополнительный язык арабский.

Как описано вдокументация,

я добавилandroid:supportsRtl="true" в манифесте.Я изменил все свойства XML сleft а такжеright приписываетstart а такжеend соответственно.Я добавил строки на арабском языке вstrings-ar (и аналогично для других ресурсов).

Вышеуказанная настройка работает правильно. После измененияLocale вar-AE, Арабский текст и ресурсы правильно отображаются в моей деятельности.

Тем не менее, каждый раз, когда я перехожу кActivity сWe,bView и / илиWebViewClient, язык, текст и направление макета внезапно возвращаются к устройству по умолчанию.

Дальнейшие подсказки:

Это происходиттолько на Nexus 6P сAndroid 7.0, Все работает правильно на Android 6.0.1 и ниже.Резкий сдвиг в локали происходиттолько когда я перейду кActivity это имеетWebView и / илиWebViewClient (а у меня их несколько). Это не происходит ни на одном из других видов деятельности.

Android 7.0 имеет поддержку нескольких локалей, что позволяет пользователю установить более одной локали по умолчанию. Так что, если я установлю основной языкLocale.UK:

Затем при переходе кWebView, язык меняется отar-AE вen-GB.

Изменения API Android 7.0:

Как указано всписок изменений APIновые методы, относящиеся к локали, были добавлены в следующие классы в API 24:

Locale:

Locale.getDefault(...)Locale.setDefault(...)

Configuration:

getLocales()setLocales(...)

Однако я создаю свое приложение с API 23 и не использую ни один из этих новых методов.

Более того ...

Проблема возникает и на эмуляторе Nexus 6P.

Чтобы получить локаль по умолчанию, я используюLocale.getDefault().

Чтобы установить язык по умолчанию, я использую следующий код:

public static void setLocale(Locale locale){
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.setLocale(locale);
    Context context = MyApplication.getInstance();
    context.getResources().updateConfiguration(config,
            context.getResources().getDisplayMetrics());
}

Кто-нибудь сталкивался с этой проблемой раньше? В чем причина, и как мне это решить?

Рекомендации:

1. Встроенная поддержка RTL в Android 4.2.

2. Многоязычная поддержка - язык и язык.

3. Остерегайтесь локали по умолчанию.

Ответы на вопрос(8)

Ваш ответ на вопрос