2014-12-09 10 views
18

Nel file manifest Eclipse, viene visualizzato un messaggio di avviso. La lingua dell'applicazione è il turco (non da destra a sinistra).Il progetto fa riferimento agli attributi RTL, ma non abilita o disabilita esplicitamente il supporto RTL

"Il progetto fa riferimento attributi RTL, ma non esplicitamente abilitare o disabilitare il supporto RTL con Android: supportsRtl nel manifesto"

non posso aggiungere Android: supportsRtl linea, perché la mia min sdk versionn è 9. Questo avviso è importante?

Grazie

risposta

35

Se non supportano RTL (= Right To locali a sinistra), è necessario sostituire tutti i riferimenti di inizio da sinistra e fine da destra nei vostri layout xml.

Gli attributi "start", "end", "paddingStart", "paddingEnd", "android: layout_alignParentStart" ecc. Sono "attributi RTL": il loro significato dipende dalla locale corrente. Il rischio di non farlo è che se qualcuno imposta la lingua del proprio sistema in arabo o in ebraico, i tuoi layout verranno specchiati, anche se il testo è ancora visualizzato in turco.

particolare "start" significa "giusto" se:

  • corrente lingua del sistema è RTL (arabo, ebraico ...)
  • e il dispositivo Android è API 17 o superiore
  • E Android: supportsRtl è impostata su true nel manifesto

Altrimenti significa "sinistra".

Così si ottiene questo avviso se si è utilizzato android: layout_gravity = "start" o qualsiasi attributo di inizio/fine in qualsiasi del layout e non hai impostato android: supportsRtl = "true" nel manifesto .

Si noti che, se il vostro min SDK è 16 o al di sotto e non si vogliono sostenere RTL, in realtà si deve scegliere una delle avvertimento:

  • se si fa sostituire inizio con sinistra si otterrà l'avvertimento: Usa "start" invece di "sinistra" per garantire un comportamento corretto nei locali da destra a sinistra Id = RtlHardCoded
  • se si imposta Android: supportsRtl per falso: Attrib ute "supportsRtl" è utilizzato solo a livello API 17 e superiore (il min corrente è 9).Id = UnusedAttribute
  • altrimenti: ** Il progetto fa riferimento attributi RTL, ma non esplicitamente abilitare o disabilitare il supporto RTL con Android: supportsRtl nel manifesto ** id = RtlEnabled

Se lo fai non supporta RTL, sembra logico impostare RtlHardCoded su Info invece che su avviso.

Maggiori informazioni:

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

Cosa succede se voglio l'applicazione per essere RTL indipendentemente dalla lingua del sistema? – Gofilord

+7

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

Problemi correlati