更改所有应用程序设计以支持RTL

时间:2017-04-29 17:01:31

标签: android xml android-layout right-to-left

在我的应用程序中,我想支持RTL布局方向以支持阿拉伯语。使用以下功能

  private void forceArabicLanguage() {
    Locale locale = new Locale("ar");
    Configuration newConfig = getResources().getConfiguration();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
      newConfig.setLocale(locale);
    else
      newConfig.locale = locale;
    Locale.setDefault(locale);
    getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
  }

我可以更改我的配置并根据语言读取字符串,并且在将android:supportsRtl="true"添加到Application in Manifest之后,布局已成功更改,直到现在每件事情都正常工作但在我的设计xml中我将每个项目的重力设置为在想要支持RTL之前向右或向左,所以设计现在没有根据重力完全改变。

我的问题是:有任何配置可以更改所有重力或将所有xml更改为RTL方向而不在values-ar下创建另一个资源布局?或者必须改变它?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

使用“开始”和“结束”,而不是“左”和“右”作为引力 这将考虑RTL支持。在LTR中,将离开。在RTL(阿拉伯语)中,开始是正确的。

请注意,这些重力是在api 17中添加的。
要支持早期版本,您应该: - 在XML中,定义左起始 - 以编程方式使用GravityCompat.START和GravityCompat.END