android - 设置为 RTL 的 Android LayoutDirection 并不总是有效
问题描述
我有 Android 应用程序,我需要将整个应用程序的布局强制为RTL
. 我通过使用 xml 属性来做到这一点android:layoutDirection="rtl"
。
一切正常,直到在我的一个活动中我需要手动finish()
活动并返回到前一个活动,此后我手动强制打开RTL
方向的每个视图都恢复到LTR
模式,直到我完全关闭应用程序并启动它再次。
我正在使用这段代码BaseActivity
来强制使用迄今为止运行良好的语言。
override fun onResume() {
applyLang()
super.onResume()
}
private fun applyLang() {
val dm = resources.displayMetrics
val conf = resources.configuration
val locale = Locale(FA_LANG.toLowerCase())
Locale.setDefault(locale)
conf.setLocale(locale)
resources.updateConfiguration(conf, dm)
}
注意:我尝试将以下代码放入onCreate
myBaseActivity
无济于事:
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
解决方案
private RelativeLayout mRoot;
初始化您的根布局对象变量,如下所示:
在活动中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourLayout);
mRoot= findViewById(R.id.message_single_layout);
}
在片段中:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mRoot= (RelativeLayout) view;
}
以及您想要将根布局方向设置为 rtl 的任何位置(如果您的最小 SKD 至少为 17)。rtl 表示从右到左
mRoot.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
推荐阅读
- python - 如何在两个方向上使用 Python 颜色图
- qt - 动画只工作一次,OnClicked
- java - 如何从 SSLContext 中检索 keyManager 详细信息?
- java - java.io.File(String parent, String child) 和 java.io.File(String pathname) 做同样的工作吗?
- python - 当我尝试在弹出窗口中将图像 png 调整为 Iframe 时,图像的分辨率降低了?(叶)
- javascript - 比较日期并将布尔值返回到日历的逻辑
- c# - ASP.NET MVC 引导模式无法正常工作
- java - 从 custom.properties 文件访问值
- python - 具有单个输出的 2 个时间序列之间的互相关
- node.js - doc.data() 在创建 doc 然后在 firestore 中设置后不是函数错误