NotFoundException: File res/drawable/abc_vector_test.xml from drawable resourceID

华为手机碰到的问题记录-NotFoundException:File res/drawable/abc_vector_test.xml from drawable resource ID

后来在build gradle中加入了

aaptOptions {

       additionalParameters "--no-version-vectors"

    }

然后就ok了。


Android Support Library 23.2有哪些新东西


应该意识到这不是一个库,而是一套库的集合 ,它们旨在无需新平台的情况下,提供API的向后兼容版本以及新功能。  23.2 版本添加了一些新的支持库,同时还为现有的库增加了新特性。
  支持Vector Drawable 和 Animated Vector Drawable
  Vector drawables 让自己可以用一个定义在XML里的矢量图象替换多个png资源。而之前这一用法只局限于Lollipop以及更高的设备,VectorDrawable和AnimatedVectorDrawable现在可以分别通过两个新的支持库support-vector-drawable 和 support-animated-vector-drawable得到。
  Android Studio 1.4 中介绍了一种通过 在编译时生成png 的办法对vector drawable提供了有限的支持。为了禁用这个功能(节省支持库的空间,真正受益于新的库),需要在 build.gradle文件里添加vectorDrawables.useSupportLibrary = true :
  // Gradle Plugin 2.0+
  android {
  defaultConfig {
  vectorDrawables.useSupportLibrary = true
  }
  }

  需要注意这个新的属性只有2.0版本的Gradle Plugin中才有。如果正在使用Gradle 1.则应该使用
  // Gradle Plugin 1.5
  android {
  defaultConfig {
  generatedDensities = []
  } 
  // This is handled for you by the 2.0+ Gradle Plugin
  aaptOptions {
  additionalParameters "--no-version-vectors"
  }
  }
  可以使用兼容到API7的VectorDrawableCompat和兼容到API11或者更高的AnimatedVectorDrawableCompat。鉴于安卓加载drawable的方式,并不是每个接受drawable id的地方(比如在一个XML文件中)都支持加载vector drawable。幸好,AppCompat 添加了几个功能让自己更容易使用新的vector drawable。
  首先,当自己和ImageView(或者例如 ImageButton 和 FloatingActionButton这样的子类) 一起使用AppCompat的时候,可以使用新的app:srcCompat属性来饮用 vector drawable(而任何其它drawable则用 android:src):
  <ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:srcCompat="@drawable/ic_add" />
  并且,如果要在运行时动态的改变drawable,可以使用和之前相同的 setImageResource() 方法 - 这点并没有变。使用AppCompat和app:srcCompat是在app中集成vector drawable最简单可靠的方式。
  会发现在Lollipop之前直接在app:srcCompat之外引用vector drawable会失败。但是AppCompat却支持其它drawable 容器比如StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable, 或者 RotateDrawable加载vector drawable。使用这种间接的方法,可以在这种情况下使用vector drawable,比如TextView的 android:drawableLeft 属性,本来在正常情况下,它是不支持vector drawable的。
  AppCompat夜间白天主题
  虽然在能各个版本的app中使用矢量图像已经是一个很大的变化了,但是这个版本还在AppCompat中添加了一个新主题:Theme.AppCompat.DayNight。

<think>嗯,用户问的是在TextView的android:background属性里使用了@drawable/bg_received_message,但这个资源不存在该怎么办。首先,我需要确认几个可能的原因。 首先,用户可能没有正确创建drawable资源文件。应该检查res/drawable目录下是否存在bg_received_message.xml或者对应的图片文件。如果没有的话,需要创建这个文件。如果是XML形状或选择器,需要用正确的语法编写。 然后,考虑文件名的问题。Android对资源命名有严格限制,只能包含小写字母、数字和下划线,且不能以数字开头。如果文件名不符合规范,系统无法识别,需要重命名。 还有资源类型的问题,比如用户可能误将图片放在mipmap目录而不是drawable,或者文件格式不正确,比如PNG图片却用了XML的扩展名,这也会导致资源找不到。 另外,清理和重建项目有时候能解决缓存问题,因为Android Studio可能没有及时更新资源索引。建议用户尝试Build菜单里的Clean Project和Rebuild Project。 如果以上步骤都检查过了,还是有问题,可能需要检查XML布局文件中是否有拼写错误,或者确认是否在正确的布局文件中引用了该资源。有时候,不同的配置限定符(比如drawable-v21)可能导致资源在特定情况下不可见,需要确保默认的drawable目录下有该文件。 最后,如果用户是新手,可能需要一步步引导他们检查每个可能的错误点,并提供具体的操作示例,比如如何创建drawable文件,如何正确命名,以及如何引用资源。同时,提醒他们在修改后重新构建项目,以确保更改生效。</think>在Android开发中遇到`@drawable/bg_received_message`资源缺失的问题时,可以按照以下步骤排查和解决: --- ### **1. 确认资源文件是否存在** - **检查路径**: 确保`bg_received_message.xml`(或`.png`/`.jpg`等图片文件)位于`res/drawable`目录下。 ✅ 正确路径示例:`app/src/main/res/drawable/bg_received_message.xml` - **常见错误**: ❌ 文件放错目录(如`res/mipmap`或`res/drawable-v24`) ❌ 文件名拼写错误(如`bg_receive_message`少了一个"d") --- ### **2. 验证资源命名规则** - **命名规范**: - 只允许小写字母、数字、下划线(如`bg_received_message_1`) - 不能以数字开头(如`1_bg_received_message`无效) - 不能包含大写字母或特殊符号(如`bgReceivedMessage`或`bg-received-message`无效) --- ### **3. 检查XML语法(如果是形状/选择器)** - **示例代码**: 若`bg_received_message.xml`是形状(Shape),确保语法正确: ```xml <!-- res/drawable/bg_received_message.xml --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#FFCCCC" /> <corners android:radius="8dp" /> </shape> ``` - **常见错误**: ❌ 缺少`xmlns:android`命名空间 ❌ 未闭合标签(如遗漏`</shape>`) --- ### **4. 清理并重新构建项目** - **操作步骤**: Android Studio菜单栏 → **Build** → **Clean Project** → **Rebuild Project** (此操作会清除缓存并重新生成资源索引) --- ### **5. 检查资源引用方式** - **正确引用**: 在布局文件中确保使用`@drawable/`前缀: ```xml <TextView android:background="@drawable/bg_received_message" ... /> ``` - **错误示例**: ❌ `@drawable/bg_received_messages`(复数形式) ❌ `@drawable/bg_received_message.xml`(不需要后缀) --- ### **6. 验证资源类型** - **图片文件**: 如果是图片(如PNG/JPG),确认文件未被损坏,且格式支持。 (Android支持`.png`、`.jpg`、`.webp`等格式) - **XML文件**: 如果是选择器(Selector)或动画(Animation),确保标签正确(如`<selector>`或`<animation-list>`)。 --- ### **7. 最终验证** - **运行时检查**: 如果编译通过但运行时崩溃,检查Logcat报错信息,常见错误: `Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f080123` (表示资源ID映射失败,需重新检查文件) --- ### **总结解决方案** 1. 确认`res/drawable`目录下存在正确命名的文件 2. 验证XML语法或图片完整性 3. 清理并重建项目 4. 检查布局文件中的引用格式 如果问题仍未解决,建议提供`bg_received_message.xml`的完整代码或截图,以便进一步定位问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值