我正在为我的应用程序设置语言设置.我能够通过使用来改变我的主要活动的区域设置
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
configuration.setLocale(new Locale("ar"));
resources.updateConfiguration(configuration,displayMetrics);
recreate();
一切正常,但我注意到后退按钮没有改变它的方向RTL:
当我将语言设置为RTL语言时,这是我预期的行为:
这可能吗?
解决方法:
更改导航栏的方向意味着应用程序将更改设备的区域设置.这样的事情类似于在设备的语言设置中设置设备语言,因为Locale定义了支持该语言的视图的语言和方向(rtl或ltr).由于您只是在应用中更改了Context的Locale,因此它不会影响设备上其他应用的Context和系统应用/组件(启动器,导航栏,状态栏等等).因此,导航栏不会更改,也不会受到应用更改的影响.
此外,要更改设备区域设置或任何其他配置(字体,字体大小,显示度量标准,旋转等),应用程序将需要SET_CONFIGURATION权限才能执行此操作.虽然在docs中没有说明,但SET_CONFIGURATION权限只能自动提供给语言和显示设置等系统应用程序.我还没有看到它是否可以被第三方应用程序从用户请求但我相信它不能像我的应用程序开发中的大多数时间一样,使用adb shell pm grant命令授予权限.命令行.通常我会在测试期间这样做,因为我的应用程序也支持其他语言,并且希望确保应用程序在这种情况下表现良好,因此我在命令行中授予它权限并让它更改语言环境测试中的设备.
标签:android,localization 来源: https://codeday.me/bug/20190701/1347550.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。