Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android cannot resolve Material Components

I am getting this error:

Cannot resolve symbol '@style/Widget.MaterialComponents.TextInputLayout.OutlineBox'

I am getting this error after I added this line to my TextInputLayout in my XML:

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

This is my full XML code(removed unrelevant constraints/margins):

<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>

this is my app 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'

and this is my other 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
}

I tried:

  • changing buildToolsVersions from "27.0.3" to "27.0.2" and sync
  • Invalidate Caches/ Restart
  • Rebuild Project

I took the XML line of code that causes error from the material.io components here. does anyone know what I am doing wrong?

Thank you :)

like image 411
Richard Miller Avatar asked Feb 04 '18 00:02

Richard Miller


2 Answers

The Material Components have not yet shipped new releases under the com.android.support:design dependency as of yet (or via any other official dependency you can include in your build.gradle file) so what you're seeing in 27.0.2 does not contain any of the recent changes - such as support for Widget.MaterialComponents.TextInputLayout.OutlineBox.

You'll have to copy the portions of the Material Components library you want directly into your project if you want access to the latest changes.

like image 57
ianhanniballake Avatar answered Sep 17 '22 15:09

ianhanniballake


Both of answers are right but i found an error by the codelabs given code on this link https://codelabs.developers.google.com/codelabs/mdc-111-kotlin/#2 The OutlineBox is misspelled the correct code is

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
like image 33
Husnain Qasim Avatar answered Sep 16 '22 15:09

Husnain Qasim