在我的 Activity 中,我以编程方式将区域设置更改为 RTL 语言。之后,我希望我的布局根据 RTL 语言环境进行刷新,而无需重新启动 Activity。
这是它的代码:
public void setLocale()
{
String arr[] = LangCode.split("_");
Configuration config = new Configuration();
DisplayMetrics dm = this.getResources().getDisplayMetrics();
Locale locale = new Locale(arr[0], arr[1]);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Locale.setDefault(locale);
config.setLocale(locale);
config.setLayoutDirection(locale);
} else {
config.locale = locale;
}
this.getResources().updateConfiguration(config, dm);
}
之后我试图使 View 无效,但没有成功。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
findViewById(R.id.intro_lang_ll).invalidate();
findViewById(R.id.intro_lang_ll).requestLayout();
}
我希望在不重新启动 Activity 的情况下更改语言环境后,我的 View 应立即镜像自身。
最佳答案
如果你不想刷新你的整个 Activity 那么你可以使用 invalidate() 如下:
public void invalidate ()
它使整个 View 无效。
如果 View 是可见的,onDraw(Canvas) 将在未来的某个时刻被调用。这必须从 UI 线程调用。 要从非 UI 线程调用,请调用 postInvalidate()。
关于android - 在有问题地将应用程序区域设置更改为 RTL 语言后,如何在不重新启动 Activity 的情况下刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406581/