web-dev-qa-db-fra.com

Android ne peut pas résoudre les composants matériels

Je reçois cette erreur:

Impossible de résoudre le symbole '@ style/Widget.MaterialComponents.TextInputLayout.OutlineBox'

Je reçois cette erreur après avoir ajouté cette ligne à TextInputLayout dans mon XML:

style="@style/Widget.MaterialComponents.TextInputLayout.OutlineBox" 

Ceci est mon code XML complet (supprimé les contraintes/marges non pertinentes):

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/textInputLayout2"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlineBox"
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    app:counterEnabled="true"
    app:counterMaxLength="300">

    <Android.support.design.widget.TextInputEditText
        Android:id="@+id/cheese_description"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:gravity="start"
        Android:hint="@string/cheese_description" />

</Android.support.design.widget.TextInputLayout>

c'est mon application build.gradle:

    apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "app.cheese.cheese.some.sample_cheese"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    buildToolsVersion '27.0.3'
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-auth:11.8.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.1'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.Android.support:design:27.0.2'
    compile 'com.google.firebase:firebase-core:11.8.0'
    implementation 'com.Android.support:appcompat-v7:27.0.2'
    compile 'com.Android.support:support-v4:27.0.2'
    compile 'com.google.firebase:firebase-storage:11.8.0'
    compile 'com.google.firebase:firebase-messaging:11.8.0'
    compile 'com.firebaseui:firebase-ui-auth:3.1.3'
    compile 'com.google.firebase:firebase-database:11.8.0'
    implementation 'com.Android.support:cardview-v7:27.0.2'
    implementation 'com.Android.support:recyclerview-v7:27.0.2'
    implementation 'com.firebaseui:firebase-ui-database:3.2.1'
}

apply plugin: 'com.google.gms.google-services'

et voici mon autre build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:3.0.1'
        classpath 'com.google.gms:google-services:3.1.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

J'ai essayé:

  • modification de buildToolsVersions de "27.0.3" à "27.0.2" et synchronisation
  • Invalider les caches/redémarrer
  • Projet de reconstruction

J'ai pris la ligne de code XML qui provoque une erreur à partir des composants material.io ici . est-ce que quelqu'un sait ce que je fais mal?

Je vous remercie :)

10
Hatzil

Les Material Components n'ont pas encore fourni les nouvelles versions sous la dépendance com.Android.support:design (ou via toute autre dépendance officielle que vous pouvez inclure dans votre fichier build.gradle), de sorte que ce que vous voyez dans 27.0.2 ne contient aucun des fichiers modifications - telles que la prise en charge de Widget.MaterialComponents.TextInputLayout.OutlineBox.

Vous devrez copier les parties de la bibliothèque de composants de matériau de votre choix directement dans votre projet si vous souhaitez accéder aux dernières modifications.

8
ianhanniballake

Les deux réponses sont correctes, mais j'ai trouvé une erreur dans le code donné par codelabs sur ce lien https://codelabs.developers.google.com/codelabs/mdc-111-kotlin/#2 La OutlineBox est mal orthographié le bon code est

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
8
Husnain Qasim

Ce style fait partie de la version alpha de la bibliothèque d’aide au design et n’est pas encore disponible avant la version Android p. Pour utiliser cette modification, compileSdkVersion en 'Android-P' et utiliser cette dépendance pour l'utiliser

implementation 'com.Android.support:design:28.0.0-alpha1'
2

Si vous utilisez un nouvel emballage pour les bibliothèques de support, vous devez utiliser:

com.google.Android.material:material:1.0.0-beta01 dépendance pour cela

2
Filipkowicz

Je reçois le même problème que j'ai résolu en utilisant ci-dessous dependencies

Utiliser ci-dessous dependencies

implementation 'com.Android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.Android.support:design:28.0.0-alpha3
0
Nilesh Rathod

ajouter ci-dessous la dépendance a résolu mon problème

implementation 'com.Android.support:design:28.0.0'

mes dépendances complètes est

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.Android.support:appcompat-v7:28.0.0'
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.Android.support:design:28.0.0'

}

0
saigopi