web-dev-qa-db-ja.com

Androidマテリアルコンポーネントを解決できません

このエラーが発生しています:

シンボル '@ style/Widget.MaterialComponents.TextInputLayout.OutlineBox'を解決できません

XMLのTextInputLayoutに次の行を追加すると、このエラーが発生します。

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コンポーネントから 。誰かが私が間違っていることを知っていますか?

ありがとうございました :)

11
Hatzil

Material Components はまだcom.Android.support:design依存関係で(またはbuild.gradleファイルに含めることができる他の公式の依存関係を介して)新しいリリースをまだ出荷していないため、 27.0.2の再表示には、Widget.MaterialComponents.TextInputLayout.OutlineBoxのサポートなど、最近の変更は含まれていません。

最新の変更にアクセスする場合は、必要なマテリアルコンポーネントライブラリの部分をプロジェクトに直接コピーする必要があります。

9
ianhanniballake

両方の答えは正しいですが、このリンク上のコードを与えられたコードラボによってエラーを見つけました https://codelabs.developers.google.com/codelabs/mdc-111-kotlin/#2 The OutlineBox is正しいコードのつづりが間違っている

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

サポートライブラリに新しいパッケージを使用する場合は、次を使用する必要があります。

com.google.Android.material:material:1.0.0-beta01そのための依存関係

4
Filipkowicz

以下の依存関係を追加して問題を解決しました

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'

}
3
Sai Gopi N

このスタイルは、デザインサポートライブラリv28アルファバージョンの一部であり、Android pリリースまではまだリリースされていません。この変更を使用するには、compileSdkVersionを 'Android-P'に変更し、これを使って

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

どういうわけか質問から外れていますが、マテリアルの内容を明確にするために(マテリアルデザインのイントロに移行するときに誰でも役立ちます)、

アプリのテーマを変更して、マテリアルコンポーネントテーマから継承する

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

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

詳細情報をご覧ください

Androidのマテリアルコンポーネント入門

0

以下のdependenciesを使用して解決した同じ問題が発生しています

以下を使用dependencies

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