2013-05-08 2 views
5

У меня есть отдельный файл макета для арабских пользователей, который я хочу использовать только для устройств, которые не поддерживают собственное зеркальное отражение RTL от Android (введено в API-интерфейсе 17). Если они используют устройство с API 17 или выше, я хочу использовать XML-файл по умолчанию.Как использовать Android-файл квалифицированного ресурса только на старых устройствах?

Как бы это осуществить? Я знаю:

Если я поместил свой home.xml в res/layout/, тогда он будет использоваться в качестве файла макета по умолчанию.

Если я ставлю другой home.xml в res/layout-ar/ тогда он будет использоваться для арабского языка

Если я ставлю другой home.xml в res/layout-ar-v17/ тогда он будет использоваться для арабского языка с v17 или выше. *

* The проблема в том, что я не хочу иметь другой home.xml, я просто хочу, чтобы система использовала значение по умолчанию и зеркалировала его.

ответ

6

Вы можете использовать Layout Aliases. У вас будет два файла макета, назовем их home_one.xml и home_two.xml. Тогда в res/values/layout.xml и res/values-ar-v17/layout.xml вы бы

<item name="home" type="layout">@layout/home_one</item> 

и res/values-ar/layout.xml вам нужно будет

<item name="home" type="layout">@layout/home_two</item> 
1

Я бы рекомендовал создать два многоразовых макета (как описано here), один для стандартного макета и один для арабского языка с уровнем API 17+. Затем вы можете определить различные файлы home.xml в соответствующих папках с конфигурацией, чтобы они соответствовали соответствующим макетам <include> (или <merge>). Таким образом вам нужно всего лишь реплицировать один тег <include> вместо всего макета.

Смежные вопросы