2014-12-09 10 views
18

W pliku manifestu Eclipse pojawia się komunikat ostrzegawczy. Językiem aplikacji jest język turecki (nie na prawo).Projekt odwołuje się do atrybutów RTL, ale nie włącza ani wyłącza jawnie obsługi RTL.

"Projekt odwołuje RTL atrybutów, ale nie jawnie włączyć lub wyłączyć obsługę RTL z Androidem: supportsRtl w manifeście"

nie mogę dodać android: supportsRtl linii, ponieważ moja min SDK versionn jest 9. To ostrzeżenie jest ważne?

Dzięki

Odpowiedz

35

Jeśli nie obsługują RTL (= od prawej do lewej lokalizacjach), trzeba wymienić wszystkie odniesienia początku przez lewo i koniec przez prawo w układach xml.

Atrybuty "start", "koniec", "paddingStart", "paddingEnd", "android: layout_alignParentStart" itd .. to "atrybuty RTL": ich znaczenie zależy od bieżących ustawień narodowych. Ryzyko nieuczestniczenia w tym przypadku polega na tym, że jeśli ktoś ustawi język systemu na arabski lub hebrajski, twoje układy zostaną odzwierciedlone, nawet jeśli tekst będzie nadal wyświetlany w języku tureckim.

Konkretnie "start" oznacza "prawo", jeżeli:

  • obecny język systemu jest RTL (arabski, hebrajski ...)
  • a android urządzenie jest API 17 lub wyższy
  • I android: supportsRtl jest ustawiony na prawdziwej w oczywisty

W przeciwnym razie oznacza "lewo".

Więc masz to ostrzeżenie, jeśli użyłeś android: layout_gravity = „start” lub dowolny atrybut start/end w dowolnym układzie i nie ustawiono androida: supportsRtl = „true” w manifeście .

zauważyć, że jeśli min SDK jest 16 lub poniżej, a ty nie chcesz wspierać RTL, faktycznie mają do wyboru jedną z ostrzeżeniem:

  • jeśli nie zastąpić początek z lewej dostaniesz ostrzeżenie: Use "start" zamiast "w lewo" w celu zapewnienia prawidłowego zachowania w prawej do lewej lokalizacjach id = RtlHardCoded
  • jeśli ustawisz android: supportsRtl do fałszywy: Attrib ute "supportsRtl" jest używane tylko na poziomie API 17 i wyższym (bieżący min to 9).Id = UnusedAttribute
  • inaczej: ** Projekt Referencje RTL atrybutów, ale nie jawnie włączyć lub wyłączyć obsługę RTL z Androidem: supportsRtl w oczywisty ** id = RtlEnabled

Jeśli zrobisz nie obsługuje RTL, wydaje się logiczne, aby ustawić RtlHardCoded na Info zamiast ostrzeżenia.

Więcej informacji:

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

Co jeśli chcę aplikacja będzie RTL niezależnie od języka systemu? – Gofilord

+7

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