web-dev-qa-db-fra.com

android.support.v7.widget.GridLayout ne peut pas le faire fonctionner

J'ai un projet Android qui utilise GridLayout dans la plupart de ses menus et écrans. Le problème est cependant que GridLayout est pris en charge à partir d'API 14 et au-delà.

Étant donné que je souhaite rendre l'application disponible à une ancienne version de Android également, j'ai essayé d'utiliser la propre bibliothèque de support d'Android GridLayout qui ajoute le support à l'API 7. Cette était exactement ce que je cherchais, mais je ne peux pas le faire fonctionner toute ma vie. J'ai essayé toutes ces explications et idées:

  1. instructions officielles d'Android
  2. Solution 1
  3. Solution 2
  4. Solution
  5. Solution 4
  6. Solution 5

et plus...

Peu importe ce que je fais, comment je le fais ou ce que IDE j'utilise (que ce soit Eclipse ADT ou Android Studio), cela me donne toujours une erreur dans le Disposition XML selon:

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: Pour référence, voici ce que j'utilise pour créer la grille de prise en charge (prise directement à partir des exemples de programmes 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>

Que pourrais-je faire de mal si aucune des solutions ci-dessus ne fonctionne? Y a-t-il quelque chose qui me manque, peut-être qu'il y a un problème avec mon code d'origine?

Toute aide est appréciée

23
user475680

Essayez d'utiliser Gradle et, dans votre fichier build.gradle, ajoutez la section suivante à la fin:

dependencies {
  implementation 'com.Android.support:gridlayout-v7:28.0.0'
  implementation 'com.Android.support:appcompat-v7:28.0.0'
}

Exécutez ensuite la tâche gradle assembleDebug.

51
IgorGanapolsky

Avec Android Studio:

  • Allez dans le build.gradle et ajoutez:

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

    dans vos dépendances.

  • Synchronisez votre projet en cliquant sur l'icône à gauche du gestionnaire AVD. Il implémentera la bibliothèque

  • Et essayez à nouveau

Avec Eclipse, essayez ceci: La prise en charge de Gridview v7 pour les anciennes api Android.support.v7.widget.Gridlayout n'a pas pu être lancée

4
nsvir

Reportez-vous à http://developer.Android.com/tools/support-library/features.html#v7-gridlayout , vous devez importer gridlayout en tant que projet Eclipse, puis l'ajouter en tant que projet de bibliothèque dans votre projet, assurez-vous que le chemin de génération a inclus le bocal.

2
user3175615

Dans mon cas, j'ai corrigé le paramètre:

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

dans le fichier manifeste du projet gridlayout_v7.

1
Ton