2011-09-02 54 views
2

所以我想添加希伯来语支持我的Android应用程序。 我不得不将版本更改为2.2,以便它具有内置的希伯来字体。布局中的一些东西已经搞乱了,但我修复了它们。Android改变语言配置布局

但有一件事已经离开 - 出于某种原因,当强制希伯来文locale时,我的一个版面会变得混乱......不知道为什么。并使用这两种语言环境相同的布局(英语和希伯来语),即使它仍然搞的一团糟这种方式(但文本仍然坚持左)

这是正常的布局(图正在全屏幕)

Normal layout

这里是搞砸一个:

Messed up layout

对XML的布局是相同的,但希伯来布局有:对textv设置“安卓重力=‘右’” IEWS。

以下是更改区域设置和配置的代码。 'setContentView'在此之后被调用。

 Locale locale = new Locale("iw"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

如果我已经问了...有没有什么办法可以在android中设置rtl读取?正如你所看到的,希伯来布局也使得文本rtl变得混乱。

我曾尝试使用RTL Unicode字符\ u200f,但你可以看到它并没有在所有帮助....

任何想法?谢谢。

+0

我已经发现真正发生了什么 - 显然,每次'onCreate'被从任何活动中调用,某些东西会与显示混淆,并且它会变得更小和更小。最后,它达到了没有任何显示的地步,然后它崩溃了....可能AVD不好,我改变它。 – Jong

+0

没有,不同的AVD版本没有改变它,每当我的应用程序中的一个活动调用它的'onCreate',我们使用这个我上面发布的代码片段,它变得越来越小...为什么? – Jong

+3

您可能正在使用默认构造函数设置的值覆盖配置中的其他值。尝试通过'getBaseContext()。getResources()。getConfiguration()'获取当前配置并编辑它,而不是通过'new Configuration()'创建一个新配置。 – 2011-09-02 21:35:37

回答

0

我不得不在清单补充一点:

<supports-screens 
    android:smallScreens="true" 
    android:normalScreens="true" 
    android:largeScreens="true" 
    android:anyDensity="true" 
    /> 

和它的工作。