来自styles.xml的样式在更改区域设置后不会重新加载

时间:2012-10-04 08:27:47

标签: android android-layout

我的应用程序有两种语言。左到左,从左到右。 我更改应用程序内的区域设置(而不是从手机设置)。 并在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

但问题仍然存在。有人有想法吗?

1 个答案:

答案 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()
 }