Программно переопределить свойство манифеста supportsRtl

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

0
0
179
1

Ответы 1

Обновлять:

Из этот ответ, можно изменить направление макета сразу во всех действиях, используя язык с направлением макета 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 и использует все действия в качестве его подклассов.

Другие вопросы по теме