解决了。这只是一个可怕的小错误。
但是对于有类似问题的任何人,我都可以在 android 版本17 或更高版本上很好地工作,对于 17 之前的版本,我认为唯一的方法是为 RTL 和 LTR 使用单独的布局。
如果您必须android:supportsRTL="true"
在清单中使用:
1. 如果您只想支持 RTL 语言,以防止根据操作系统语言改变方向:只需添加android:layoutDirection="rtl"
到所有布局的父级(您也可以styles.xml
像这样使用主题)。或者创建一个子活动并从中扩展您的所有活动,然后将此代码放入它的 onCreate 中:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration configuration = getResources().getConfiguration();
configuration.setLayoutDirection(new Locale("fa"));
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
}
但在我看来,最好rtl
在每个布局中设置方向,因为您可以在不运行应用程序的情况下看到它的外观。
2. 如果你想同时支持 RTL 和 LTR 语言,当然不要android:layoutDirection="rtl/ltr"
在你的布局中使用,因为它的方向即使通过代码也不会改变任何方式。因为它会在rtl
或方向上修复它ltr
。所以你应该使用第二个。制作一个子活动并从中扩展您的所有活动,然后将此代码放入其中(仅作为示例):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Configuration configuration = getResources().getConfiguration();
if (isSlectedLanguageRTL) {
configuration.setLayoutDirection(new Locale("fa"));
} else {
configuration.setLayoutDirection(Locale.ENGLISH);
}
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
}
最后,对不起我的英语:)