我的应用程序有两种语言。左到左,从左到右。 我更改应用程序内的区域设置(而不是从手机设置)。 并在resume()函数上重新加载数据以查看UI上的更改。 我有两个文件夹的values.one值-en,一个值-fa。 要将textview的方向更改为RTL和LTR,请在这些文件夹中放置两个styles.xml。 styles.xml(values-en):
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Direction">
<item name="android:gravity">left</item>
<item name="android:layout_gravity">left</item>
</style>
</resources>
styles.xml(values-fa):
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Direction">
<item name="android:gravity">right</item>
<item name="android:layout_gravity">right</item>
</style>
</resources>
并使用此样式,例如我这样做:
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/menutext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/Direction"
android:padding="0dp"/>
</RelativeLayout>
如果我运行应用程序,一切正常,textview的方向与语言环境有关。问题在这里当我从应用程序的设置从选项菜单更改语言时,数据加载正确,但方向不正确我应该去另一个活动看看方向的变化。
要解决这个问题,我可以删除styles.xml,因为我使用的是Html.fromHtml()并且我的数据已经
<p dir="LTR">
和
<p dir="RTL">
标签?
另一个可能的解决方案(感谢TOMCA的评论):android dynamically change style at runtime
但问题仍然存在。有人有想法吗?
答案 0 :(得分:2)
在这里做什么解释: android dynamically change style at runtime
和恢复问题: 只是尝试在onResume中调用setContentView(),如下所示:
@Override
protected void onResume() {
if(selectedLang.equalsIgnoreCase("fa"))
context.setTheme(R.style.CustomTheme_DirectionRight);
else
context.setTheme(R.style.CustomTheme_DirectionLeft);
super.onResume();
setContentView(R.layout.content);
findAgainViews();//because recalling setContentView reset all findViewById()
}