16

Ho un progetto Android che utilizza GridLayout nella maggior parte dei suoi menu e schermate. Il problema tuttavia è che GridLayout è supportato dall'API 14 e successivi.android.support.v7.widget.GridLayout non riesce a farlo funzionare

Dal momento che voglio per rendere l'applicazione disponibile per la versione precedente di Android, così, ho cercato di usare propria libreria di supporto di Android GridLayout, che aggiunge il supporto fino a API 7. Questo era esattamente quello che stavo cercando, ma non posso per la vita di me lo faccio funzionare. Ho provato tutte queste spiegazioni e idee:

  1. Android's official instructions
  2. Solution 1
  3. Solution 2
  4. Solution 3
  5. Solution 4
  6. Solution 5

e Mor e ...

Non importa quello che faccio, come lo faccio o cosa IDE che uso (se Eclipse ADT o Android Studio), mi dà sempre un errore nel XML layout lungo le linee di:

The following classes could be instantiated: - android.support.v7.widget.GridLayout 

With either one of these exceptions showing in the error log: 

1. android.content.res.Resources$NotFoundException: Could not resolve value 0x7F080000 
2. java.lang.classnotfoundexception: android.support.v7.gridlayout.R$dimen 

Edit: per riferimento questo è quello che sto usando per creare il GridLayout supporto (presi direttamente dai programmi di esempio Android):

<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="wrap_content" 
    android:background="@drawable/blue" 
    android:padding="10dip" 
    app:columnCount="4" 
    > 
    <TextView 
     android:text="@string/string_test" 
    /> 
    <EditText 
     app:layout_gravity="fill_horizontal" 
     app:layout_column="0" 
     app:layout_columnSpan="4" 
    /> 
    <Button 
     android:text="@string/button_test" 
     app:layout_column="2" 
    /> 
</android.support.v7.widget.GridLayout> 

Cosa potrei fare male che nessuna delle soluzioni di cui sopra lavoro? C'è qualcosa che mi manca, forse c'è un problema con il mio codice originale?

Ogni aiuto è apprezzato

+0

Inserisci il tuo codice xml – nsvir

+0

@nsvir - aggiunto il mio codice XML, anche se niente di speciale, ho usato il codice di esempio dato da android – user475680

risposta

4

Con Android Studio:

  • Go nel build.gradle e aggiungere:

    compile 'com.android.support:appcompat-v7:18.0.+' 
    

    nelle vostre dipendenze.

  • Sincronizzare il progetto facendo clic sull'icona a sinistra di AVD manager. Si implementerà la libreria

  • E riprovare

Con Eclipse provare questo: Gridview v7 support for older api android.support.v7.widget.Gridlayout failed to instaniate

+0

Il codice che sto usando è in esecuzione senza gradle (mentre provi a crearne uno via eclipse mostra un errore e non fa nulla), ho visto questa soluzione ma visto che non sto usando gradle non è fattibile – user475680

+0

Prova la mia modifica per Eclipse – nsvir

+0

già provato ... non funziona per me – user475680

38

Provare a utilizzare Gradle, e nel file build.gradle aggiungere la seguente sezione alla fine:

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

Quindi eseguire task gradleDebug.

+1

Questa dovrebbe essere la risposta accettata. L'importazione di v24 appcompat e successive in ADT (Eclipse) non funzionerà. Gli strumenti di compilazione non memorizzano più le librerie compatibili con ADT e l'estrazione da .aar è troppo impegnativa: prendere in considerazione il passaggio a Android Studio e al sistema di build basato su Gradle. – milosmns

1

Nel mio caso ho riparato impostazione:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> 

nel file manifesto del progetto gridlayout_v7.

Problemi correlati