Android 更改所有应用程序设计以支持RTL
在我的应用程序中,我希望支持RTL布局方向以支持阿拉伯语。使用以下函数Android 更改所有应用程序设计以支持RTL,android,xml,android-layout,right-to-left,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)
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”后,我可以根据语言和布局成功更改配置和读取字符串
到清单中的应用程序
到目前为止,所有东西都正常工作,但在我的设计xml中,我将每个项目的重力设置为右或左,然后才希望支持RTL,因此现在的设计不会完全根据重力进行更改。我的问题是:是否有任何配置可以更改所有重力或将所有xml更改为RTL方向,而无需在值ar下创建另一个资源布局?还是必须改变它?感谢您的帮助使用“开始”和“结束”代替“左”和“右”作为重力。
这将考虑RTL支持。在LTR中,将保留start。在RTL(阿拉伯语)中,“开始”是正确的 请注意,这些重力是在api 17中添加的。
要支持早期版本,您应该:
-在XML中定义开始和结束。
-以编程方式使用GravityCompat.START和GravityCompat.END代替“左”和“右”作为重力,使用“开始”和“结束”。
这将考虑RTL支持。在LTR中,将保留start。在RTL(阿拉伯语)中,“开始”是正确的 请注意,这些重力是在api 17中添加的。
要支持早期版本,您应该:
-在XML中定义开始和结束。
-以编程方式使用GravityCompat.START和GravityCompat.END