在当前主题中未找到样式'coordinatorLayoutStyle'。

65

我正在使用最新版本的Android Studio(3.0),以及最新的构建工具(27)和类似的API级别。

设计选项卡中没有呈现布局,这给我带来了很多麻烦,特别是因为我正在使用Coordinator Layout。

我该如何解决这个问题?


2
你尝试过“无效缓存/重启”吗? - Abdul Kawee
请添加一些代码或更多的解释 - Erfan
18个回答

109
我通过将这行代码插入应用程序主题(应用程序主题通常放置在styles.xml中)来解决了渲染问题。
[SDK 28]
<style name="AppTheme">
  <item name="coordinatorLayoutStyle">@style/Widget.Support.CoordinatorLayout</item>
</style>

[SDK 27]

<style name="AppTheme">
  <item name="coordinatorLayoutStyle">@style/Widget.Design.CoordinatorLayout</item>
</style>
根据@Chris的建议,如果IDE在Widget.Support或Widget.Design中未找到CoordinatorLayout,请直接开始输入“CoordinatorLayout”,它应该会给出一些选项。

7
浪费了很多时间在这上面。你知道为什么会发生这种情况吗?我以前没有问题,但突然间出了问题。 - M at
4
有时候Android真是太奇怪了,翻白眼 谢谢,这解决了我的问题。 - Arbitur
7
谢谢。Android Studio需要这样做,真是太荒谬了。 - Monte Creasor
8
好的,对于我来说,这在启动“Hello World”应用程序时发生了:D 这意味着他们引入了一个内置错误 :)) - Hassan Faghihi
7
如果它说它不存在,尝试开始输入“Coord”,它会给你一些选项。我的在@style/Widget.Support.CoordinatorLayout下面。 - Chris
显示剩余5条评论

35

事实证明,新的SDK 28在创建新项目时会不幸地在Android Studio上引入此错误。

如何解决:

检查您的build.gradle(模块:app)文件并更改:

compileSdkVersion 28
targetSdkVersion 28

收件人:

compileSdkVersion 27
targetSdkVersion 27

请确保您正在使用正确的依赖版本:

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'

4
或者您可以选择保持在SDK 28而不是升级到28.0.0-alpha3版本的支持库,改为降级到28.0.0-alpha1版本的支持库,正如这个答案所建议的:https://dev59.com/RVUM5IYBdhLWcg3wINak#51091869。 - Livven
就是这样,将SDK 28更改为27并同步Gradle解决了问题。 - Thiago Souza
正如@Livven所建议的那样,Support Library 28.0.0-alpha3存在一些问题。 - Geraldo Neto

11
build.gradle(module)中将 implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' 的 alpha 3 改为 alpha 1。同步后,你就可以进行操作了。我花了一整天的时间来尝试解决这个问题,但都没有成功。希望这能有所帮助。

2
我不得不将 implementation 'com.android.support:design:28.0.0-alpha3' 也改成 alpha1。 - Mujeebcpy

7

我曾经也面临同样的问题。从布局预览窗口更改主题并没有帮助到我。

解决方案: 我更新了我的build.gradle(app)文件:

dependencies {
    implementation 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support:design:27.0.2'
}

还有一件事:


compileSdkVersion 27
targetSdkVersion 27

2
或者保持在SDK 28上,而将支持库版本从“28.0.0-alpha3”降级到“28.0.0-alpha1”,正如这个答案所建议的 https://dev59.com/RVUM5IYBdhLWcg3wINak#51091869。 - Livven
这个对我起作用了。 - Jonas Grønbek

6
 <style name="Theme.Shrine" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="coordinatorLayoutStyle">@style/Widget.Support.CoordinatorLayout</item>
</style>

在你的材料主题中添加。

3
我的28 alpha支持库无法识别。 - Abhinav Saxena
我不得不这样做才能让我的工作正常。通过使用Android Studio的智能感知功能,只需开始输入“Coord”即可找到它。 - Chris

6
对于Android Studio 3.1.4用户: 我尝试了最佳答案,但它对我没有用。 插入此行:

<style name="AppTheme.NoActionBar">
   <item name="coordinatorLayoutStyle">@style/Widget.Design.CoordinatorLayout</item>
</style>

将应用程序主题更改并不解决渲染问题,因此我已撤消该更改。

解决方法: 我在我的build.gradle(Module:app)文件中进行了以下更改:

更改前:

android {
   compileSdkVersion 28
      defaultConfig {
         targetSdkVersion 28
      }
   }
}

dependencies {
   implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
   implementation 'com.android.support:design:28.0.0-rc01'
}

修改后:

android {
   compileSdkVersion 27
      defaultConfig {
         targetSdkVersion 27
      }
   }
}

dependencies {
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
}

它对我来说完美地运作了。希望这对你有用。


谷歌正在发布RC版本,我们还需要使用27吗? - tiagocarvalho92

5
感谢您的回复,我通过调试代码找到了解决方案。
在一个片段的父布局中,我启用了tools:showIn属性,然后将其移动到了一个viewpager中。之前它嵌入在主机活动中,尽管lint没有捕获它,这有点令人惊讶。

2
我认为这是在Android Studio 3.0+中普遍存在的问题,希望下一个更新能够解决它。在Android Studio预览版3.2中,它可以很好地工作。 下载Android Studio预览版 输入图像描述

1
作为旁注,在Android Studio的设计视图中,如果我将以下内容添加到styles.xml文件中:
<style name="Coordinator">
    <item 
    name="coordinatorLayoutStyle">@style/Widget.Design.CoordinatorLayout</item>
</style>

将以下内容添加到布局的xml资源文件中的CoordinatorLayout中。
<android.support.design.widget.CoordinatorLayout
    android:theme="@style/Coordinator"
    android:orientation="vertical"
    android:id="@+id/sample_layout_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/sample_background"
    tools:theme="@style/Coordinator">

至少,设计视图停止生成缺失的coordinatorLayoutStyle错误。


你好,请尽量说明为什么它没有运作。以及你建议的更改,为什么会有所不同。 - Mihir Dave
由于Android Studio的一个bug,它无法工作。 - Phillip

1
我有同样的问题,但是在Android Studio 3.1.4上。所以,首先我在build.gradle中进行了以下操作:将这个:
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support:design:28.0.0-rc01'
implementation 'com.android.support:support-v4:28.0.0-rc01'
替换为:
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'
但是不知何故,在项目重新构建后问题再次出现。所以,我采取了以下方法:这是我的项目gradle.build文件。
buildscript {
    ext.kotlin_version = '1.2.41'
    ext.android_support = '27.1.1'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

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

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

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

这里是应用程序的 build.gradle 文件:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "*****.******"//Replace with your own ID
        minSdkVersion 16
        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'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support:design:27.1.1'

    implementation 'com.android.support:support-v4:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    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'
}

这解决了我的问题

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接