Android не может разрешить материальные компоненты

Я получаю эту ошибку:

Не удается разрешить символ '@style/Widget.MaterialComponents.TextInputLayout.OutlineBox'

Я получаю эту ошибку после того, как я добавил эту строку в свой TextInputLayout в своем XML:

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

Это мой полный XML-код (удалены несоответствующие ограничения/поля):

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

это мое приложение 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'

и это мой другой 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
}

Я старался:

  • изменение buildToolsVersions от "27.0.3" до "27.0.2" и синхронизация
  • Недействительный кеш/перезагрузка
  • Реконструкция проекта

Я взял XML-код кода, который вызывает ошибку в компонентах material.io. Кто-нибудь знает, что я делаю неправильно?

Спасибо :)

Ответы

Ответ 1

Компоненты Material еще не отправили новые версии под зависимость com.android.support:design еще (или через любую другую официальную зависимость, которую вы можете включить в файл build.gradle), так что вы видите в 27.0.2 не содержат никаких недавних изменений, таких как поддержка Widget.MaterialComponents.TextInputLayout.OutlineBox.

Вам нужно будет скопировать части библиотеки материалов, которые вы хотите прямо в свой проект, если вы хотите получить доступ к последним изменениям.

Ответ 2

Оба ответа верны, но я нашел ошибку в кодеделябе, указанном на этой ссылке. Https://codelabs.developers.google.com/codelabs/mdc-111-kotlin/#2. OutlineBox ошибочно написано, что правильный код

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

Ответ 3

Если вы используете новую упаковку для библиотек поддержки, вы должны использовать:

com.google.android.material:material:1.0.0-beta01 зависимость для этого

Ответ 4

добавить ниже зависимости решил мою проблему

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

мои полные зависимости

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'

}

Ответ 5

Этот стиль является частью альфа-версии библиотеки поддержки дизайна v28, и она еще не выпущена до релиза android p. Чтобы использовать это изменение, компилируйтеSdkVersion в "android-P" и используйте эту зависимость, чтобы использовать его

implementation 'com.android.support:design:28.0.0-alpha1'

Ответ 6

Я получаю ту же проблему, которую я решил, используя ниже dependencies

Использовать ниже dependencies

implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support:design:28.0.0-alpha3

Ответ 7

Не совсем в вашем вопросе, но чтобы уточнить материал Material (он может помочь любому при переходе к вводной части Material Design),

Измените тему приложения, чтобы она наследовала от темы "Компоненты материала"

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- ... -->
</style>

в

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- ... -->
</style>

для получения дополнительной информации посетите

Начало работы с компонентами материалов для Android