Переопределить свойство манифеста SupportRtl программно - PullRequest
0 голосов
/ 15 сентября 2018

Есть ли способ установить / переопределить свойство support-RTL в Manifest во время выполнения в Android?Я хотел бы иметь возможность переключать макет программно без фактического изменения локали.Из того, что я искал, похоже, мне придется установить направление макета для приложения и каждого действия.Есть ли более простое решение?

1 Ответ

0 голосов
/ 15 сентября 2018

Обновление:

Из этого ответа можно изменить направление макета во всех действиях одновременно, используя язык с направлением RTL. В ответе используется Farsi язык для RTL. Вы можете использовать английский, если хотите LTR.

Поместите следующий код в метод onCreate вашей активности запуска перед вызовом setContentView:

Configuration configuration = getResources().getConfiguration();
configuration.setLayoutDirection(new Locale("fa")); // Farsi for RTL
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());

Старый ответ:

Вы можете получить ссылку на вид декора в каждом упражнении и установить направление макета.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}

Чтобы сделать этот процесс короче, поместите приведенный выше код в onCreate метод общего класса BaseActivity, который расширяет AppCompatActivity, и используйте все действия в качестве его подклассов.

...