Язык Специфический макет для Android

Я знаю, что мы можем отображать поддержку нескольких языков для нашего приложения для Android с разными значения значений папки значений-en, values-ar.

Мой вопрос в том, можем ли мы изменить стиль макета при изменении языка.

Как и на английском языке, каждая вещь начинается с "левого-правого", однако арабский просто аппетит к ней. поэтому можно поместить изображение слева, если язык выбран на английском языке и изменить макет при изменении языка на арабский

Ответ 1

Направление макета вашего приложения. ldrtl означает "layout-direction-right-to-left". ldltr означает "layout-direction-left-to-right" и является неявным значением по умолчанию.

Это может применяться к любому ресурсу, например layouts, drawables или values.

Например, если вы хотите предоставить некоторый конкретный макет для Arabic language и некоторого общего макета для любого другого языка "справа налево" (например, персидского или иврита), вы бы получили:

res/
layout/   
    main.xml  (Default layout)
layout-ar/  
    main.xml  (Specific layout for Arabic)
layout-ldrtl/  
    main.xml  (Any "right-to-left" language, except
              for Arabic, because the "ar" language qualifier
              has a higher precedence.)

Примечание.. Чтобы включить функции компоновки right-to-left для вашего приложения, вы должны установить supportsRtl в "true" и set targetSdkVersion to 17 or higher.

Ответ 2

мы можем изменить стиль макета при изменении языка.

Да. Вы можете предоставить различные макеты в соответствии с выбранным пользователем языком. Это четко описано в документации Предоставление ресурсов.

Infact используется специальный определитель макета для поддержки языков, ориентированных на право-левый, называемых res/layout-ldrtl.

P.S: Этот атрибут поддерживается только из API 17.

Ответ 3

Добавить direction- и языковые ресурсы

Этот шаг включает в себя добавление определенных версий файлов макета, рисованных объектов и значений, которые содержат настраиваемые значения для разных языков и текстовых указаний.

В Android 4.2 (уровень API 17) и выше вы можете использовать классификаторы ресурсов -ldrtl (layout- direction- справа налево) и -ldltr (layout- direction- слева направо). Чтобы обеспечить обратную совместимость с загрузкой существующих ресурсов, в старых версиях Android используются квалификаторы языка ресурсов для определения правильного направления текста.

Предположим, что вы хотите добавить определенный файл макета для поддержки сценариев RTL, таких как иврит, арабский и персидский языки. Для этого вы добавляете макет -ldrtl/directory в ваш каталог res/, как показано в следующем примере:

res/
    layout/
        main.xml //This layout file is loaded by default.
    layout-ldrtl/
        main.xml //This layout file is loaded for languages using an
                 //RTL text direction, including Arabic, Persian, and Hebrew.

Если вы хотите добавить определенную версию макета, предназначенного только для арабского текста, ваша структура каталогов станет следующей:

res/
    layout/
        main.xml //This layout file is loaded by default.
    layout-ar/
        main.xml //This layout file is loaded for Arabic text.
    layout-ldrtl/
        main.xml //This layout file is loaded only for non-Arabic
                 //languages that use an RTL text direction.

Примечание. Специфичные для языка ресурсы имеют приоритет над макетными ресурсами direction-, которые имеют приоритет над ресурсами по умолчанию.