Изменение конфигурации языка Android портит макет - PullRequest
2 голосов
/ 03 сентября 2011

Поэтому я пытаюсь добавить поддержку иврита в мое приложение для Android. Мне пришлось изменить версию на 2.2, чтобы в ней были встроенные шрифты на иврите. Некоторые вещи в макете испортились, но я их исправил.

Но осталось одно - по какой-то причине при форсировании иврита локализуется ОДНА из моих раскладок ... Понятия не имею, почему. И даже при использовании одного и того же макета для обеих локалей (английский и иврит) это все равно запутывается (но тексты все равно остаются слева)

Вот нормальный макет (график занимает полный экран)

Normal layout

А вот и запутанный:

Messed up layout

Оба макета xml одинаковы, но в текстовом представлении на иврите есть 'android: gravity = "right" ".

Вот код для изменения локали и конфигурации. 'setContentView' вызывается сразу после этого.

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

А если я уже спрашиваю ... Есть ли способ установить чтение rtl в android? Как видите, ивритский макет испортил и текст rtl.

Я пытался использовать юникод-символ rtl \ u200f, но, как вы можете видеть, это совсем не помогло ....

Есть идеи? Спасибо.

1 Ответ

1 голос
/ 03 сентября 2011

Я должен был добавить это в манифесте:

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

И это сработало.

...