从Android Studio 2.3升级到3.0且buildToolsVersion为'26.0.2'后,无法解决符号'?attr/actionBarSize'。

122

在将Android Studio从2.3更新到3.0后,我将buildToolsVersion从26.0.0更改为26.0.2,此后我遇到了以下错误:

Cannot resolve symbol '?attr/actionBarSize

Xml 代码:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:titleTextColor="@android:color/white"/>

依赖项:

compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'

可能你已经升级了Gradle的版本。 - Evan
尝试点击“构建”>“清理项目”。 - Michael N
16个回答

249

没有任何帮助,但是更改:

?attr/actionBarSize?android:attr/actionBarSize 解决了问题。

实际上这是几个版本中的一个错误。即使您不修复它,Android也会在运行时自动修复它。


20
我认为 ?android:attr/actionBarSize 只兼容 21 版本以上的API,而要在 Android Studio 中使用 ?attr/actionBarSize,需要安装一个 21 版本以下的SDK。对我来说,另一个问题是确保 compileSdk 和 support 库具有相同的主版本号(在我的情况下是27)。 - Daniel Wilson
2
嗯,看起来有点神奇,但它可以运行。我希望能看到一个定义性的解释,准确地描述各种SDK出现问题的原因以及哪些能正常使用以及原因。 - SMBiggs
看起来像是一个 bug,因为这个错误出现时项目仍然可以编译和构建成功。 - LMaker

34

更新所有库的版本至26.1.0(最新版本),并且还需添加:

compile 'com.android.support:support-v4:26.1.0'

如果您正在使用 Android Studio 3.0.0 及更高版本,请使用

implementation 'com.android.support:support-v4:26.1.0'

同步您的项目,错误将自动解决,因为?attr/actionBarSizev4库的一部分。


请指明您所谈论的库版本。 - D_Alpha
我必须更改: implementation 'com.android.support:support-v4:26.1.0' 为 compile 'com.android.support:support-v4:26.1.0' - Louis Parkin
1
现在请使用implementation,而不是compile - Suragch
这个回答适用于旧版的Android Studio,但现在对新版本不起作用,因此我接受@VictoriaKlimova的回答为正确答案。感谢EvrenYurtesen指出这一点。 - Rahul Roshan
我同意@Suragch的观点,compile已经被implementation所取代。 - George
显示剩余2条评论

28

在项目目录层次结构中,将 "Android" 切换为 "Project"。 然后删除一个文件夹 ".idea/libraries",只留下 "libraries"。 从菜单中选择一个选项 "File -> Invalidate Caches / Restart... -> Invalidate and Restart"。


3
这对我也起作用了。但是,很好奇为什么会起作用。 "无效缓存/重新启动" 到底是做了什么? - Anil Gorthy
谢谢。我使用com.android.support:support-v4:27.1.1成功了。 - Arash

11

你好,我知道现在略有些晚了。

但是我也遇到了这个问题,当我更新到Android Studio 3.0时。

我所做的是改变了。

compile 'com.android.support:support-v4:26.1.0'

对于

implementation 'com.android.support:support-v4:26.1.0'

希望它能对某些人有所帮助。


将 support_library = '27.1.1' 降级为 support_library = '27.1.0' 对我有用。不确定为什么降级可以解决问题。 - The Tokenizer

4
这是我解决完全相同问题的方法。 1. 进入SDK管理器。 2. 选中Android API 27和Android 8.0(奥利奥)。 3. 点击“应用”以下载并安装这些SDK。 4. 在build.gradle中将“buildToolsVersion“26.0.1””更改为“buildToolsVersion“26.0.2””,然后进行gradle同步。 希望这能帮助您解决问题。

3
你的buildToolsVersion版本与依赖项中的版本不同 (例如,buildToolsVersion为27.0.0, 但实现“com.android.support:support-v4:27.0.1”)。 将它们变成相同的版本。

2

通过将compileSdkVersiontargetSdkVersion26更改为最新版本的27,我的问题得到了解决。此外,您还需要升级您的dependencies27

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com......"
        minSdkVersion 15
        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'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support:design:27.1.0'
}

希望这也能解决您的问题 :)

1

这个起作用了。

我已经将编译和支持库版本从26.x.x更新到27.x.x。


1
我尝试了这里所有的答案以及其他很多地方的答案,但只有以下技巧适用于我。简单的方法是你只需要关闭项目,然后将同一项目作为Gradle项目导入。或者你可以进入项目结构->项目->更改Gradel插件=4.4和Android插件版本=3.1.4。以上两种方法都有效。
注意:当我写这篇答案时,这些版本(4.4、3.1.4)是最新的,请使用最新版本代替。

1
R.attr.actionBarSize 更改为 androidx.appcompat.R.attr.actionBarSize

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