我使用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:文件res/color/selector_tab_blue_white.xml来自可提取资源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)
我尝试过这些解决方案。
如果有人能帮忙,那就太好了。感谢
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
是颜色选择器时,这对我来说也是有效的。
您必须将可绘制文件与可绘制文件夹一起添加到两个文件夹中:
drawable
drawable-v24
这样它就不会在任何设备上崩溃。
希望这能帮助
请按照以下步骤解决此问题
- 首先检查该文件是否存在于项目中
- 现在同步你的成绩
- 点击清洁项目
- 单击"重建"项目
- 使缓存无效/重新启动
- 重新运行项目
在TabLayout 的声明样式中
<attr format="reference" name="tabBackground"/>
因此,在您的情况下,修改以下
<item android:color="@color/blue_4880ff" android:state_selected="true" /> <item android:color="@color/white" />
进入
<item android:drawable="@color/blue_4880ff" android:state_selected="true" /> <item android:drawable="@color/white" />