【问题标题】:Exception android.content.res.Resources$NotFoundException: File res/color/selector_tab_blue_white.xml from drawable resource ID #0x7f0601d8异常 android.content.res.Resources$NotFoundException:来自可绘制资源 ID #0x7f0601d8 的文件 res/color/selector_tab_blue_white.xml
【发布时间】:2020-08-22 09:13:54
【问题描述】:

我正在使用 tabLayout 作为

  <com.google.android.material.tabs.TabLayout
                    android:id="@+id/tabLayoutSubscriptionDays"
                    style="@style/CustomTabLayoutTextSizeSix"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/_40sdp"
                    android:background="@color/white"
                    app:tabBackground="@color/selector_tab_blue_white"
                    app:tabIndicatorColor="@color/transparent"
                    app:tabMode="fixed"
                    app:tabSelectedTextColor="@color/white"
                    app:tabTextColor="@color/black" />

在某些设备中,我遇到如下异常:android.content.res.Resources$NotFoundException: File res/color/selector_tab_blue_white.xml from drawable resource ID #0x7f0601d8

这是我在颜色目录中的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/blue_4880ff" android:state_selected="true" />
<item android:color="@color/white" />
</selector>

我已经尝试了很多解决方案,例如:

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)

这些解决方案我都试过了。

如果有人可以提供帮助,那就太好了。谢谢

【问题讨论】:

    标签: android material-design android-resources android-tablayout android-vectordrawable


    【解决方案1】:

    在 TabLayout 的 declare-styleable 中

    &lt;attr format="reference" name="tabBackground"/&gt;

    所以在你的情况下,修改以下内容

    &lt;item android:color="@color/blue_4880ff" android:state_selected="true" /&gt; &lt;item android:color="@color/white" /&gt;

    进入

    &lt;item android:drawable="@color/blue_4880ff" android:state_selected="true" /&gt; &lt;item android:drawable="@color/white" /&gt;

    【讨论】:

      【解决方案2】:

      app:tabBackground 属性需要引用,这意味着它必须指向可绘制资源。

          <!-- Reference to a background to be applied to tabs. -->
          <attr format="reference" name="tabBackground"/>
      

      您需要创建一个具有引用所需颜色的形状的可绘制对象(在本例中为color/selector_tab_blue_white.xml)。

      例如drawable/selector_tab_blue_white_background.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/selector_tab_blue_white" />
      </shape>
      

      在您的布局 xml 中,将 app:tabBackground 引用属性更改为:

         app:tabBackground="@drawable/selector_tab_blue_white_background"
      

      即使所需的颜色 color/selector_tab_blue_white.xml 是颜色选择器,这也对我有用。

      【讨论】:

        【解决方案3】:

        请按照以下步骤解决此问题..

        1. 首先检查此文件是否存在于项目中
        2. 现在同步你的 gradle
        3. 点击清理项目
        4. 点击重建项目
        5. 使缓存无效/重新启动
        6. 重新运行项目

        【讨论】:

        • 我做了你所描述的一切,如果它不存在,那么我如何给你.XML文件?
        • 请将您的选择器 XMl 移动到可绘制文件夹中,然后将 app:tabBackground="@color/selector_tab_blue_white" 更改为 app:tabBackground="@drawable/selector_tab_blue_white"
        【解决方案4】:

        您必须将该可绘制文件与可绘制文件夹一起添加到 2 个文件夹中:

        drawable
        drawable-v24
        

        那么它不会在任何设备上崩溃。

        希望对你有帮助

        【讨论】:

        • 我的选择器在颜色目录中。
        • 为什么在color目录下?你可以尝试移动到drawable并尝试
        • 因为它是颜色选择器,所以它就在那里,是的,我尝试将它移动到 drawable 中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多