相关疑难解决方法(0)

Android Selector使用VectorDrawables srcCompat绘制

我遇到了与VectorDrawables的新向后兼容性问题.在支持库中,23.2是一个新功能,用于向后兼容所生成的Android VectorDrawables.

我有一个ImageView,它是一个SelectorDrawable分配给.这个Drawable拥有几个VectorDrawables所以我认为我应该使用app:srcCompat来兼容.但它在我的Galaxy S2上使用android 4.1.2不起作用.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_gps_fixed_24dp"android:state_activated="true" android:state_selected="true"></item>
    <item android:drawable="@drawable/ic_gps_not_fixed_24dp" android:state_activated="true" android:state_selected="false"></item>
    <item android:drawable="@drawable/ic_gps_not_fixed_24dp" android:state_activated="false" android:state_selected="true"></item>
    <item android:drawable="@drawable/ic_gps_off_24dp" android:state_activated="false" android:state_selected="false"></item>
    <item android:drawable="@drawable/ic_gps_not_fixed_24dp"></item>
</selector>
Run Code Online (Sandbox Code Playgroud)

所有drawables都是vector xml文件.

当使用此SelectorDrawable与srcCompat时,我收到此错误:

  Caused by: android.content.res.Resources$NotFoundException: File res/drawable/  Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_gps_fixed_24dp.xml from drawable resource ID #0x7f0201c1
                                                                           at android.content.res.Resources.loadDrawable(Resources.java:1951)
                                                                           at android.content.res.Resources.getDrawable(Resources.java:672)
                                                                           at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
                                                                           at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881).xml from drawable resource ID #0x7f0201c1
Run Code Online (Sandbox Code Playgroud)

使用android:src更糟糕.

如果我使用app:srcCompat中的一个矢量drawable,一切正常.所以我猜这是SelectorDrawable和兼容性的问题.

有没有人有同样的问题,并找到了解决方案,或者目前无法在Android 5之前的SelectorDrawables中使用VectorDrawables?

简要说明:

  • 编译目标API 23
  • 支持Libraray 23.3.0
  • vectorDrawables.useSupportLibrary = true
  • Gradle 2.0

android vector android-appcompat android-support-library android-vectordrawable

60
推荐指数
3
解决办法
3万
查看次数

TabItem放置在布局XML中时如何使用?

TabLayout文件给出了嵌套的例子TabItem里面直接TabLayout像这样:

<android.support.design.widget.TabLayout
     android:layout_height="wrap_content"
     android:layout_width="match_parent">

    <android.support.design.widget.TabItem
         android:text="@string/tab_text"/>

    <android.support.design.widget.TabItem
         android:icon="@drawable/ic_android"/>

</android.support.design.widget.TabLayout>
Run Code Online (Sandbox Code Playgroud)

但它没有给出如何在实践中使用它的例子,TabItem的文档说:

此视图实际上并未添加到TabLayout,它只是一个虚拟对象,允许设置选项卡项的文本,图标和自定义布局.

那是TabItem为了什么?经过广泛的谷歌搜索后,我找不到任何人在XML中定义TabItems的例子.有没有办法在资源文件中使用TabItem设置选项卡式活动,如上所示?

android android-layout android-tabs android-tablayout

27
推荐指数
1
解决办法
3万
查看次数