2012-04-23 11 views
26

Avevo sviluppato un'app con API di destinazione come 15. Il layout include un layout di griglia. Ora, quando sto cambiando l'API di destinazione a 10, sto riscontrando problemi con il layout della griglia e un altro elemento 'spazio'. Eclipse mi suggerisce di scaricare una libreria di supporto per 2.3.3, che ho fatto ... Ma ancora avendo il problema.Supporto di layout di griglia in API Android 10

risposta

36

GridLayout è stato backported per essere compatibile con API livello 7 e versioni successive. È (una specie) parte della libreria di supporto. Dopo aver scaricato la libreria di supporto, troverete un progetto libreria di Android SDK nella cartella locale situato a:

<sdk_folder>\extras\android\compatibility\v7\gridlayout 

impostarlo come la dipendenza del progetto su cui stai lavorando. Dopodiché dovrai cambiare i riferimenti nel tuo progetto dalla versione di livello 15 a quella di compatibilità per supportare i dispositivi pre-ICS. Nei file Layout cambia il tuo xml da GridLayout in android.support.v7.widget.GridLayout. L'utilizzo dovrebbe essere simile, se non identico.

Per quanto riguarda il widget di Space: Non ho effettivamente utilizzato questo (ancora), ma sembra essere qualcosa che potrebbe essere sostituito da uno impostando margine/padding sulla vista esistente o aggiungendo nel proprio generica View che è completamente trasparente.

+0

Grazie mate ... Ha funzionato per me !!! e sì sei rito del widget spaziale, mi sono aggirato usando una textview trasparente –

+0

Informazioni sul widget dello spazio: se stai usando il widget dello spazio solo per una vista che occupa spazio, considera l'utilizzo di una normale vista. Una vista di base occupa lo spazio del layout, ma è compito della sottoclasse implementare effettivamente il disegno, quindi in teoria, View non fa alcun disegno ed è quindi trasparente. – Neilers

+0

Questo mi ha salvato la vita stasera. Grazie! – Matt

18

Se si utilizza Android Studio, una volta scaricata la libreria di supporto (come @MH. Menzionato) è necessario utilizzare File->Import Module..., quindi selezionare la posizione del supporto GridLayout, che per me si trovava qui: <sdk_folder>\extras\android\support\v7\gridlayout.

Successivamente, invece di utilizzare <Gridlayout> nel file di layout xml, si utilizza <android.support.v7.widget.GridLayout>. Ecco un esempio:

<android.support.v7.widget.GridLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:useDefaultMargins="true" 
    app:alignmentMode="alignBounds" 
    app:columnOrderPreserved="false" 
    app:columnCount="4" 
> 

elementi nel layout farà riferimento app anziché android oggetti GridLayout come visto sopra e negli elementi figlio:

<TextView 
     android:textSize="32dip" 
     app:layout_columnSpan="4" 
     app:layout_gravity="center_horizontal" 
    /> 

Infine, deve essere aggiunto il riferimento libreria di supporto GridLayout alla sezione di dependencies\src\build.gradle:

dependencies { 
    compile 'com.android.support:appcompat-v7:+' 
    compile 'com.android.support:gridlayout-v7:+' 
} 
+0

Nell'attuale Android Studio puoi anche andare su File -> Struttura progetto -> Modulo tu sotto moduli -> Dipendenze. Questo è un po 'più facile. – SleepProgger

Problemi correlati