2013-12-17 16 views
16

voglio creare un layout lineare con orientamento orizzontalecome creare LinearLayout Android con orientamento orizzontale RTL

ma voglio che posizionare i propri figli allineati alla sua destra e non alla sua sinistra, come al solito

come posso farlo?

so come fare questo usando relativeLayout, ma voglio praticare LinearLayout

+0

cosa significa rtl? – Blackbelt

+0

perché non è possibile utilizzare RelativeLayouts? – Gooziec

+0

So come farlo usando relativoLayout, ma voglio praticare linearLayout –

risposta

22

È possibile utilizzare Android: attributo layoutDirection introdotto in 4.2 (jelly bean).

I collegamenti seguenti aiuteranno.

http://developer.android.com/reference/android/view/View.html#attr_android:layoutDirection

http://android-developers.blogspot.co.uk/2013/03/native-rtl-support-in-android-42.html

+0

Ho provato la soluzione per Android prima della 4.2 nel secondo link: http://android-developers.blogspot.co.uk/2013/03/native-rtl-support-in-android-42.html tuttavia si genera un errore : "Errore: errore nell'analisi di XML: attributo duplicato" Penso che questa soluzione sia inapplicabile –

+0

come suggerisce il collegamento; il supporto RTL è disponibile in 4.2, non precedente. – harun

5

è possibile utilizzare questo frammento di codice per invertire le vostre opinioni di layout.

LinearLayout ll = // inflate 
ArrayList<View> views = new ArrayList<View>(); 
for(int x = 0; x < ll.getChildCount(); x++) { 
    views.add(ll.getChildAt(x)); 
} 
ll.removeAllViews(); 
for(int x = views.size() - 1; x >= 0; x--) { 
    ll.addView(views.get(x)); 
} 

O Per iniziare sostenere i layout RTL nella vostra applicazione, impostare l'attributo android: supportsRtl all'elemento nel file manifesto e impostarlo su “true" Una volta che si attiva questo, il sistema consentirà varie API RTL. per visualizzare la tua app con i layout RTL. Ad esempio, la barra delle azioni mostra l'icona e il titolo sul lato destro e i pulsanti di azione sulla sinistra, e qualsiasi layout che hai creato con le classi View fornite dal framework verranno anche invertite. Look at this android doc

+0

Incredibile tweek, non ci ho pensato. –

2

È possibile impostare sulla gravità della vista dell'elemento genitore a destra

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" <!-- make sure this is not wrap_content !--> 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:gravity="right" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="A"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="B"/> 

</LinearLayout 
+1

Questo non funziona per me ... – TacB0sS

+0

ha funzionato bene per me –

+0

Non funziona per me. – nomnom

9

se si utilizza in studio Android si può fare questo:

1- destra fare clic sulla cartella principale del progetto

2- refactoring

3- supporto aggiuntivo per RTL

Problemi correlati