Android无法解析符号'?attr / selectableItemBackground'

时间:2017-05-16 17:10:05

标签: android android-xml

<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/card_outer_padding"
    android:layout_marginTop="@dimen/card_outer_padding"
    android:layout_marginRight="@dimen/card_outer_padding"
    android:layout_marginBottom='@{model.cardBottomMargin}'
    android:foreground="?attr/selectableItemBackground"
    android:onClick="@{model::onCardClick}"
    app:cardElevation="2dp"
    app:cardCornerRadius="2dp"
    app:cardUseCompatPadding="true">
</android.support.v7.widget.CardView>

我收到此错误消息

无法解析符号?attr/selectableItemBackground 验证Android XML文件中的资源引用。

<TextView
    android:id="@+id/country_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginRight="40dp"
    android:text="@{model.name}"
    style="@style/TextAppearance.AppCompat.Headline"
    tools:text="Country"/>

而且,我也遇到了类似的错误

无法解析符号'@ style / TextAppearance.AppCompat.Headline'
验证Android XML文件中的资源引用。

任何指针都会很棒!谢谢! 它似乎与此thread有关,但未提供解决方案:

10 个答案:

答案 0 :(得分:142)

我认为这是IDE和Android Gradle插件的通信问题。在任何情况下,我可靠找到解决的唯一方法是删除.idea/libraries/文件夹中的有问题的库

所以,对你来说,因为lint检查没有识别?attr/selectableItemBackground

  1. 找到Gradle__com_android_support_xxx.xml个文件
  2. 删除这些文件
  3. 带文件系统的SYNC IDE
  4. 带有Gradle文件的SYNC项目
  5. 重建你的项目
  6. 您可以通过单击工具栏顶部的“文件”并选择“与文件系统同步”,然后选择“使用gradle文件同步项目”来同步。

    我尝试了其他建议的解决方案 - 在我的模块build.gradle文件中有appcompat-v7依赖关系。 google()存储库作为项目build.gradle依赖项的第一行。纳达。

    这些解决方案也没有帮助...

    • 使缓存无效/重新启动无效。
    • 清理/重建项目。

答案 1 :(得分:44)

对于版本Lollipop及更高版本,请使用此选项:

android:foreground="?android:attr/selectableItemBackground"

Pre-Lollipop使用此:

android:foreground="?attr/selectableItemBackground"

答案 2 :(得分:9)

2个选项:

选项1

  

另一个可能的原因是:未设置Google的maven存储库   构建脚本。

     

打开项目的主build.gradle添加以下行:

buildscript {
    repositories {
        google()  <-- this
        // Be also sure that google() is before jcenter()
    }
}
     

如果没有此功能,可能无法下载Android Studio Gradle   插件3.0+。它不是在jCenter中分发,而是在Google的maven中分发   库中。

选项2

在项目和重新同步项目的根目录中运行此命令

Linux的:

rm .idea/libraries/Gradle__com_android_support_*.xml

视窗:

del .idea\libraries\Gradle__com_android_support_*.xml

答案 3 :(得分:4)

更新Kotlin后我遇到了同样的错误。解决了“无效缓存/重新启动”

<强>更新 今天这个解决方案没有帮助我。但是这个问题的解决方案是:Android Studio 3.1 Cannot Resolve Symbol (Themes, Widget, attr, etc.)

答案 4 :(得分:3)

这两个资源都是使用Android支持库定义的,由于这些符号无法解析,因此您似乎缺少定义支持依赖项。

dependencies {
    compile "com.android.support:appcompat-v7:$androidSupportVersion"
}

答案 5 :(得分:0)

在我的案例中,帮助将 maven 添加到 buildscripts.repositories allprojects.repositories 中的 build.gradle项目 。它看起来像这样:

lsqnonlin

答案 6 :(得分:0)

我解决了,

  • 在项目资源管理器中删除.idea文件夹。
  • 使缓存无效/重新启动
  • 刷新项目摇篮

答案 7 :(得分:0)

这是解决我的问题

  1. 关闭Android Studio
  2. 删除根项目目录中的 .idea 目录

enter image description here

  1. 重新导入项目

enter image description here

答案 8 :(得分:0)

我将gradle版本更新为4.10.1,并修复并重新导入对其进行了修复。 .idea之前没有库文件夹。

答案 9 :(得分:0)

如果对applicationContext使用LayoutInflater,则将其替换为普通context。它对我有用。