有没有一种方法可以在Android的运行时设置/覆盖Manifest中的supports-RTL属性? 我希望能够以编程方式切换布局,而无需实际更改语言环境。 通过搜索,看来我必须为Application和每个活动设置布局方向。有没有更简单的解决方案?
答案 0 :(得分:0)
更新:
在this answer,中,可以使用具有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
的{{1}}方法中,该类扩展了BaseActivity
并将所有活动用作其子类。