Search code examples
javaandroidlocalehebrewright-to-left

Android changing language configuration messes up layout


So I'm trying to add hebrew support to my android app. I had to change the version to 2.2 so it would have built-in hebrew fonts. Some things in the layout has messed up but I fixed them.

But one thing has left - for some reason, when forcing hebrew locale, ONE of my layouts gets messed up... No idea why. And even when using the SAME layout for both locales (English and Hebrew) it's still get messed up this way (But the texts still stick to the left)

Here is the normal layout (Graph is taking full screen)

Normal layout

And here is the messed one:

Messed up layout

Both xml layouts are the same, but the hebrew layout has 'android:gravity="right"' set on the textviews.

Here is the code to change locale and configuration. 'setContentView' is called right after this.

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

And if I'm already asking... Is there any way to set rtl reading in android? As you can see, the hebrew layout has messed up the text rtl too.

I have tried to use the rtl unicode character \u200f, but as you can see it didn't help at all....

Any ideas? Thanks.


Solution

  • I had to add this in the manifest:

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

    And it worked.