当 phone 是英文时,是否可以根据应用程序的语言环境支持 rtl 文本方向?

Is it possible to support rtl text direction according to app's locale while phone is in English?

当我将 phone 的语言转换为阿拉姆语并相应地设置了我的应用程序的语言环境后,我设法支持了 rtl 布局。我还没有做到,老实说,我想知道是否有可能,当应用程序的语言环境设置为这样的语言(例如 new Locale("ar"))和我的 phone' 时,支持 rtl 布局s 的语言是英语。当我这样做时,我的应用程序遵循 ltr 方向并概括它,我注意到应用程序的文本方向完全取决于 phone 的语言,忽略区域设置至于文本方向。那么有人知道如何在具有合适语言环境但 phone 变成英文的应用程序中支持 rtl 逻辑吗?或者这是否可能?

编辑

感谢所有回答问题的人,但他们的回答没有回答我的问题。我可能没有说清楚,但是当我将 phone 转换为从右到左的语言并在开发人员选项中强制使用 rtl 时,我设法支持了 rtl。我的问题是 当 phone 的语言是英语但我的应用程序的语言环境是阿拉姆语时,是否可以使用 "right-to-left app"?或者一切都将以 "left-to-right" 逻辑显示,但带有相应的阿拉姆语翻译?

将这行代码添加到您想要成为 rtl 的每个 activity 的 onCreate 方法的最顶部(在 super 和 setContentView 之前)。它将强制布局为 RTL

 getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);

要完全支持 rtl,请执行以下操作:

第 1 步:

将以下内容添加到清单文件。

<application
    android:supportsRtl="true">

    ...

</application>

第 2 步:

在您的翻译器编辑器中翻译所有字符串。 help here.

第 3 步:

更新您的布局。

代替 paddingLeft / paddingRight 使用 paddingStart 和 paddingEnd,应用程序将确定它运行的语言,并相应地放置填充或边距。对边距做同样的事情。

第 4 步:

使用以下方法在运行时检查应用程序是否以从右到左模式运行。

public boolean isRTL(Context ctx) {
  Configuration config = ctx.getResources().getConfiguration();
  return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
}

所以...如果您只想更改应用程序区域设置,请使用以下代码:

Locale locale = new Locale("ru");
Locale.setDefault(locale);
Configuration config = 
  getBaseContext().getResources().getConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
  getBaseContext().getResources().getDisplayMetrics());

关注下方 link 以支持从右到左的阿拉伯语和从左到右的其他语言。

https://android-developers.googleblog.com/2013/03/native-rtl-support-in-android-42.html

我的诀窍是在更新我的资源配置时使用 conf.setLayoutDirection(currentLocale);。所以回答我自己的问题...是的,当 phone 转向 ltr 语言时可以有一个 rtl 应用程序。