gpt4 book ai didi

java - 以编程方式更改导航栏方向 (RTL)

转载 作者:行者123 更新时间:2023-11-30 10:35:39 26 4
gpt4 key购买 nike

我的应用程序支持 4 种不同的语言,其中两种是从右到左编写的。

如果我从 android 系统更改语言然后启动我的应用程序,一切正常。我得到一个镜像布局 (RTL),甚至导航栏也是镜像的。

我的问题是我的应用程序中有一个按钮可以更改语言。要以编程方式更改区域设置,我正在这样做:

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

然后重新创建 Activity :

this.recreate();

Activity 是从 RTL 重新创建的,但导航栏保持旧样式(未镜像):

navigation bar

是否可以通过编程方式镜像导航栏?

编辑(添加图像):

如果我更改系统语言一切正常:

right

如果我以编程方式更改语言,导航栏不会更改:

wrong

最佳答案

从 Android 4.2.2( API Level 17 ) 开始,它原生支持 RTL。

When you are changing language pragmatically so how does the OS knows that you want RTL on specific language change. When the language is in RTL format. like when you change locale to Arabic then force system to do RTL and when the app closes then change back to original form.

要强制整个布局为 RTL,包括导航栏方向 (RTL),请执行以下操作。编辑您的 AndroidManifest.xml并添加 android:supportsRtl="true"

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>

到您的<application>标记,然后将以下行添加到 Activity 的顶部 onCreate()方法 forceRTLIfSupported();然后将 follow 函数插入到您的 Activity 中。

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void forceRTLIfSupported()
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){

//HERE CHECK CONDITION FOR YOUR LANGUAGE if it is AR then
//change if it is english then don't

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


}
}

输出:

enter image description here

注意:

特别是“开始”表示“正确”,如果:

  • 当前系统语言是RTL(阿拉伯语、希伯来语……)
  • Android 设备API 17 或更高版本

更多信息:Android Dev

enter image description here

enter image description here

关于java - 以编程方式更改导航栏方向 (RTL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com