我正在尝试使用矢量绘图用于导航抽屉图标,但我在棒棒糖前设备上遇到错误。我正在使用gradle 2.1.3
。这是我做的:
我添加了vectorDrawables.useSupportLibrary = true
和相应的依赖项:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
compile 'com.android.support:animated-vector-drawable:24.2.0'
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:cardview-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile 'com.android.support:percent:24.2.0'
compile 'com.android.support:recyclerview-v7:24.2.0'
compile "com.android.support:support-annotations:24.2.0"
compile 'com.android.support:support-v4:24.2.0'
compile 'com.android.support:support-vector-drawable:24.2.0'
compile 'com.flaviofaria:kenburnsview:1.0.7'
}
然后我将矢量drawable .xml文件(即ic_shopping_cart.xml
)添加到res/drawable
文件夹。
然后我在导航抽屉菜单xml(即activity_main_drawer.xml
)中使用矢量drawables,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_shopping_cart"
app:icon="@drawable/ic_shopping_cart"
android:title="Shopping Cart" />
</group>
</menu>
这适用于&gt; API 21,但在棒棒糖前设备上崩溃,因为vectorDrawables.useSupportLibrary = true
禁用旧设备上的PNG生成。我可以从vectorDrawables.useSupportLibrary = true
删除build.gradle
,因此较旧的设备可以回退到导航抽屉图标的PNG,但除非我别无选择,否则我不想这样做。
我尝试将app:icon
更改为app:srcCompat
并将应用名称空间(即xmlns:app="http://schemas.android.com/apk/res-auto"
)添加到导航抽屉xml中,但不显示任何图标。
添加向量可绘制库支持可能有助于为<ImageView>
设置可绘制向量,但菜单布局中的<item>
又如何呢?
我错过了什么吗?还是不支持?或其他什么?
对于处理app:src
<ImageView>
属性的类似问题,我的问题不应视为重复。我的问题与在菜单布局中处理android:icon
标记的<item>
属性有关。