Android 无法解析 Material 个组件
Android cannot resolve Material Components
我收到这个错误:
Cannot resolve symbol
'@style/Widget.MaterialComponents.TextInputLayout.OutlineBox'
我在 XML:
中将此行添加到我的 TextInputLayout 后出现此错误
style="@style/Widget.MaterialComponents.TextInputLayout.OutlineBox"
这是我的完整 XML 代码(删除了不相关的 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>
这是我的应用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”并同步
- 使缓存无效/重新启动
- 重建项目
我采用了导致错误 from the material.io components here 的 XML 行代码。有谁知道我做错了什么?
谢谢:)
Material Components 目前还没有在 com.android.support:design
依赖项下发布新版本(或者通过任何其他你可以包含在 build.gradle
文件中的官方依赖项)所以你在 27.0.2
中看到的内容不包含任何最近的更改 - 例如对 Widget.MaterialComponents.TextInputLayout.OutlineBox
的支持。
如果您想访问最新的更改,您必须将所需的 Material 组件库部分直接复制到您的项目中。
此样式来自于设计支持库v28 alpha版的部分,待androidp发布后才发布。要使用此更改 compileSdkVersion 到 'android-P' 并使用此依赖项来使用它
implementation 'com.android.support:design:28.0.0-alpha1'
两个答案都是正确的,但我发现代码实验室给出的代码有误 link https://codelabs.developers.google.com/codelabs/mdc-111-kotlin/#2
OutlineBox 拼写错误正确的代码是
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
如果您对支持库使用新包装,您应该使用:
com.google.android.material:material:1.0.0-beta01
对
的依赖
我遇到了使用下面 dependencies
解决的相同问题
在下方使用 dependencies
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support:design:28.0.0-alpha3
添加下面的依赖解决了我的问题
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'
}
有点偏离你的问题,但要澄清 Material 的东西(它可以帮助任何人迁移到 Material 设计介绍),
更改您的应用主题以继承自 Material 组件主题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- ... -->
</style>
到
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- ... -->
</style>
有关详细信息,请访问
确保在你的 AndroidManifest.xml 文件中,你有一个 materialcomponents 作为你的 Activity 的主题。
像这样的事情:
<activity android:name=".activities.LoginActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar">
</activity>
我收到这个错误:
Cannot resolve symbol '@style/Widget.MaterialComponents.TextInputLayout.OutlineBox'
我在 XML:
中将此行添加到我的 TextInputLayout 后出现此错误style="@style/Widget.MaterialComponents.TextInputLayout.OutlineBox"
这是我的完整 XML 代码(删除了不相关的 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>
这是我的应用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”并同步
- 使缓存无效/重新启动
- 重建项目
我采用了导致错误 from the material.io components here 的 XML 行代码。有谁知道我做错了什么?
谢谢:)
Material Components 目前还没有在 com.android.support:design
依赖项下发布新版本(或者通过任何其他你可以包含在 build.gradle
文件中的官方依赖项)所以你在 27.0.2
中看到的内容不包含任何最近的更改 - 例如对 Widget.MaterialComponents.TextInputLayout.OutlineBox
的支持。
如果您想访问最新的更改,您必须将所需的 Material 组件库部分直接复制到您的项目中。
此样式来自于设计支持库v28 alpha版的部分,待androidp发布后才发布。要使用此更改 compileSdkVersion 到 'android-P' 并使用此依赖项来使用它
implementation 'com.android.support:design:28.0.0-alpha1'
两个答案都是正确的,但我发现代码实验室给出的代码有误 link https://codelabs.developers.google.com/codelabs/mdc-111-kotlin/#2 OutlineBox 拼写错误正确的代码是
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
如果您对支持库使用新包装,您应该使用:
com.google.android.material:material:1.0.0-beta01
对
我遇到了使用下面 dependencies
在下方使用 dependencies
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support:design:28.0.0-alpha3
添加下面的依赖解决了我的问题
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'
}
有点偏离你的问题,但要澄清 Material 的东西(它可以帮助任何人迁移到 Material 设计介绍),
更改您的应用主题以继承自 Material 组件主题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- ... -->
</style>
到
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- ... -->
</style>
有关详细信息,请访问
确保在你的 AndroidManifest.xml 文件中,你有一个 materialcomponents 作为你的 Activity 的主题。 像这样的事情:
<activity android:name=".activities.LoginActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.MaterialComponents.Light.NoActionBar">
</activity>