此代码导致仿真器(API 18)上的强制关闭异常,并在华硕Nexus 7(API 21)中运行
<View
android:layout_width="400dp"
android:layout_height="2dp"
android:layout_marginTop="30dp"
android:background="@color/light_gray" />
如果我用@color/light_gray
取代#EBEBEB
,则可以在两台设备上完美地工作。
例外是
Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f080060 a=-1 r=0x7f080060}
所以我开始使用下面的代码,
<Button
android:layout_width="wrap_content"
android:layout_marginTop="30dp"
android:layout_height="wrap_content"
android:ems="10"
android:background="@drawable/login_btn_selector"
android:text="Login"
android:id="@+id/btnLogin" />
这个抛出异常,
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi-v4/login_btn_selected.xml from drawable resource ID #0x7f020095
所以我尝试将login_btn_selected.xml
放在res/drawable-hdpi-v4/
文件夹中,然后它说res/drawable-hdpi/
和res/drawable-hdpi-v4/
之间出现了重复文件,所以我将其从{{1}中删除了,然后再次在v4文件夹中找到相同的资源异常,
res/drawable-hdpi/
所以最后我来到SO。
问题是,
如果在真实设备中也意味着我该如何克服这个问题?
我想使用Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi-v4/login_btn_selected.xml from drawable resource ID #0x7f020095
而不是硬编码,我也想使用drawable选择器。
注意:我删除并重新创建了模拟器,没有用。我也在API 19模拟器上测试了同样的问题。
任何解决方案都会非常明显。
答案 0 :(得分:11)
这是因为我的颜色资源文件位于\res\values-21
文件夹下,现在将其移动到\res\values\
文件夹,现在应用程序工作正常。谢谢各位朋友。
答案 1 :(得分:3)
另外,请确保您没有将imageView的背景设置为selectableItemBackgroundBorderless
,否则旧设备会出现此错误:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:selectableItemBackgroundBorderless" />
答案 2 :(得分:1)
我在最近的应用程序中遇到了同样的问题。在我的情况下,问题是我把一个图像放在名为drawable-v21的文件夹中,这在旧的Android API中是不可用的。
解决方案是将你的drawable放在drawable -... dpi文件夹中。
答案 3 :(得分:0)
您的色彩资源必须位于Android资源文件中(即:colors.xml
文件中)
Android不会抱怨 你设置它,但必须被定义为颜色资源。
即:
<color name="light_gray">#ebebeb</color>
<强> [编辑] 强>
名称似乎不匹配...
见这一行:
android:background="@drawable/login_btn_selector"
然后你说:So I tried to place the login_btn_selected.xml
。
似乎是
的原因Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi-v4/login_btn_selected.xml from drawable resource ID #0x7f020095.
答案 4 :(得分:-1)
我认为最好的方法是,首先在&#34; drawable&#34;内创建一个xml文件。文件夹并执行以下操作。
e.g。 light_gray.xml然后执行类似下面的操作。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/light_gray" />
</shape>
保存后。
更改您的代码,如下所示。
<View
android:layout_width="400dp"
android:layout_height="2dp"
android:layout_marginTop="30dp"
android:background="@ drawable/light_gray" />
但请务必将文件light_gray.xml仅放到&#34; drawable&#34;夹。不要将相同的文件放到&#34; drawable-hdpi或drawable-hdpi-v4等等#34;