我正在尝试更改Android应用中的语言,而我正在使用此代码:
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
我已经创建了不同的values
目录(\values-fr
,\values-it
等),我放了string.xml
个文件。
更改语言正常,但问题是它正在改变我的应用程序中的文本尺寸(文本视图,菜单,对话框,edittexts,按钮上的文本大小......基本上在我的所有应用程序中)。
删除更改区域设置的区块代码,应用布局恢复正常。 getDisplayMetrics()
是否会产生问题?
我正在使用某些文字的样式:
<style name="title_font">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#095080</item>
<item name="android:textSize">26sp</item>
<item name="android:textStyle">bold</item>
</style>
一些textview的例子:
<TextView
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
style="@style/title_font"
android:text="@string/login_title" />
<TextView
android:id="@+id/label_user"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginTop="50dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/user_label"
android:layout_below="@+id/login"/>
你能告诉我为什么会发生这种情况以及如何解决这个问题? 如果您需要任何其他信息,请询问。
答案 0 :(得分:3)
经过几个小时的搜索,我在评论中找到了解决方案:Android changing language configuration messes up layout
基本上你必须更换
Configuration config = new Configuration();
与
Configuration config = getBaseContext().getResources().getConfiguration();
这样,您不会创建新配置,只会修改现有配置。