Язык Специфический макет для 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-, которые имеют приоритет над ресурсами по умолчанию.