Подтвердить что ты не робот

Проект ссылается на атрибуты RTL, но явно не включает и не отключает поддержку RTL

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

"Проект ссылается на атрибуты RTL, но явно не включает или отключает поддержку RTL с помощью android: поддерживает Rtl в манифесте

Я не могу добавить строку android: supportsRtl, потому что моя min sdk versionn равна 9. Это предупреждение важно?

Спасибо

4b9b3361

Ответ 1

Если вы не поддерживаете RTL (= Right To Left locales), вам нужно заменить все ссылки start на left и end справа в ваших xml-макетах.

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

В частности, "start" означает "right", если:

  • текущий системный язык - RTL (арабский, иврит...)
  • И Android-устройство API 17 или выше
  • И android: supportsRtl установлен в true в манифесте

В противном случае означает "left".

Итак, вы получите это предупреждение, если вы использовали android: layout_gravity = "start" или любой атрибут start/end в любом из ваших макетов, и вы не установили android: supportsRtl = true " в манифесте.

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

  • Если вы замените start налево, вы получите предупреждение: Используйте "start" вместо "left", чтобы обеспечить правильное поведение в локациях справа налево Id = RtlHardCoded
  • если вы установите android: supportsRtl на false: Атрибут "поддерживает Rtl" используется только в уровне API 17 и выше (текущий минимум равен 9). Id = UnusedAttribute
  • в противном случае: ** Проект ссылается на атрибуты RTL, но явно не включает или отключает поддержку RTL с помощью android: поддерживает Rtl в манифесте ** 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