2014-12-09 2 views
18

В файле манифеста Eclipse я получаю предупреждающее сообщение. Язык приложения - турецкий (не справа налево).Проект ссылается на атрибуты RTL, но явно не включает и не отключает поддержку RTL

«Проект ссылается на атрибуты RTL, но не явно включить или отключить поддержку RTL с андроида: supportsRtl в манифесте»

Я не могу добавить андроида: supportsRtl линии, потому что мой мин SDK versionn это 9. Это предупреждение важно?

Благодаря

ответ

35

Если вы не поддерживаете RTL (= Right To Left локалей), необходимо заменить все ссылки начала по покинул и конца по правой в верстку XML.

Атрибуты «start», «end», «paddingStart», «paddingEnd», «android: layout_alignParentStart» и т. Д. Являются «атрибутами RTL»: их значение зависит от текущей локали. Риск не делать это заключается в том, что если кто-то устанавливает свой системный язык на арабский или иврит, ваши макеты будут зеркалированы, даже если текст все еще отображается на турецком языке.

В частности "старт" означает "право", если:

  • текущего язык системы RTL (арабский, иврит ...)
  • И андроид устройство является API 17 или выше
  • И андроида: supportsRtl установлен в истинной в проявленном

В противном случае означает «левый».

Таким образом, вы получите предупреждение, если вы использовали андроид: layout_gravity = «старт» или любое начало/конец атрибут в любом из макета и вы не установили андроида: supportsRtl = «истинный» в манифесте ,

Обратите внимание, что, если ваш мин SDK является 16 или ниже, и вы не хотите, чтобы поддержать RTL, вы на самом деле нужно выбрать один из предупреждения:

  • если вы замените старт с левой стороне вы получите предупреждение: Использование «начать» вместо «влево», чтобы обеспечить правильное поведение в правой налево локалей Id = RtlHardCoded
  • если вы установите андроид: supportsRtl к ложным: Attrib ute «поддерживает Rtl» используется только в уровне API 17 и выше (текущий мин равен 9).Id = UnusedAttribute
  • иначе: ** Проект References атрибуты RTL, но не явно включить или отключить поддержку RTL с андроида: supportsRtl в проявленном ** Id = RtlEnabled

Если вы не поддерживает RTL, кажется логичным установить RtlHardCoded в Info вместо предупреждения.

Подробнее:

http://android-developers.blogspot.co.il/2013/03/native-rtl-support-in-android-42.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+blogspot/hsDu+(Android+Developers+Blog)

http://developer.android.com/guide/topics/manifest/application-element.html#supportsrtl

+0

Что делать, если я хочу, чтобы приложение, чтобы быть RTL, независимо от языка системы? – Gofilord

+7

@ Gofilord: .segaugnal RTL ni daer ot drah yrev gnihtyreve ekam dluow tahT – nickgrim

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