Update Android Support Library to 23.2.0 cause error: XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0
Update Android Support Library to 23.2.0 cause error: XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0
我尝试将我的支持库更新到 23.2.0 并遇到此错误:
Exception while inflating <vector>
org.xmlpull.v1.XmlPullParserException: Binary XML file line #17<vector> tag requires viewportWidth > 0
at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:535)
at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472)
at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:829)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:303)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
和
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chotot.vn.dev/com.chotot.vn.v2.activities.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2091)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:897)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:837)
at android.content.res.Resources.loadDrawable(Resources.java:2087)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我的activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/f_actionbar"
android:name="com.chotot.vn.fragments.ActionBarFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<android.support.v7.widget.Toolbar
android:id="@+id/main_tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_alignParentTop="true"
android:background="@color/action_bar_bg">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/main_action_bar_layout"
layout="@layout/layout_actionbar_custom_search"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top" />
<LinearLayout
android:id="@+id/main_action_bar_layout_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/main_action_bar_layout"
android:orientation="vertical" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
<FrameLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/main_tool_bar" />
</RelativeLayout>
我该如何解决?
在您的 build.gradle 文件中使用此代码
//for Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
如果您使用的是 Gradle 1.5,您将改为使用
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
我想可能是他们在其他 lib.found here
下面使用了矢量可绘制紧凑型
有同样的问题。对我来说实际上升级构建工具版本有帮助:
buildToolsVersion "23.0.2"
请删除应用程序兼容性gradle(
compile "com.android.support:appcompat-v7:23.2.0"
)
并替换为支持设计 (compile 'com.android.support:design:23.1.1'
) 这将解决问题
当我构建我的应用程序的新版本时,我对这个完全相同的问题感到惊讶。我对 appcompact 的依赖设置为自动更新。
compile 'com.android.support:appcompat-v7:23+'
因此,一旦有新版本可用(在本例中为 23.2.0 版),它将取代您正在构建的旧版本。
因此您可以切换回以前版本的 appcompat 库(快速修复):
compile 'com.android.support:appcompat-v7:23.1.1'
或者保留当前库版本并使用's answer as explained by google in version 23.2.0 release note。
如果您选择后者,请不要忘记将您的 gradle 构建工具更新到 1.5.0 版,否则您将无法使用 generatedDensities
:
等新参数
classpath 'com.android.tools.build:gradle:1.5.0'
在棒棒糖之前的设备上,您需要创建选择器才能在 ImageView 的其他位置使用 VectorDrawable
app:srcCompat="@drawable/your_vector_drawable"
选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/your_vector_drawable" />
</selector>
那么你可以传递这个选择器,例如对于 xml
中的 TextView drawableLeft/drawableRight
<TextView
android:gravity="center_vertical"
android:drawableLeft="@drawable/selector_your_vector_drawable"
android:drawableStart="@drawable/selector_your_vector_drawable"
android:drawableRight="@drawable/selector_your_vector_drawable"
android:drawableEnd="@drawable/selector_your_vector_drawable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/your_string" />
我遇到了这个问题,但更新到以下版本为我解决了这个问题:
classpath 'com.android.tools.build:gradle:1.5.0'
并且:
buildToolsVersion "23.0.2"
模块依赖:
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'
compile 'com.google.android.gms:play-services:8.4.0'
遇到api19更新到23.2.0时的崩溃问题。
我通过将版本更新到 23.2.1 解决了这个问题。(回答这个问题时的最新版本。尝试更新到最新版本,也许 google 已修复它)
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support:23.2.1'.
我有这个问题,但更新到版本 build:grade:
classpath 'com.android.tools.build:gradle:1.5.0'
并且:
buildToolsVersion "23.0.2"
成功!
我通过替换
解决了这个问题
dependencies {
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'
}
和
dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}
我通过更换
解决了这个问题
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'
和
compile 'com.android.support:appcompat-v7:23.0.2'
compile 'com.android.support:support-v4:23.0.2'
您也可以升级到 23.4.0
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
}
并使用标志手动启用此功能:
static
{
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
在使用向量的 activity 中。
在Gradle (gradle:2.1.0):
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
布局中:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/you_vector_drawable"/>
上述几种解决方案的组合对我有用。这是我所做的 -
像这样项目的build.gradle
中将gradle版本从1.3.0更改为1.5.0
classpath 'com.android.tools.build:gradle:1.5.0'
更新 app
的 build.gradle
中的以下内容
buildToolsVersion "23.0.2"
将模块依赖项从 23.2.0 更新到 23.4.0:
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-vector-drawable:23.4.0'
compile 'com.android.support:animated-vector-drawable:23.4.0'
现在,根据您使用的 gradle 版本,使用以下两个代码段之一。
因为我使用的是 gradle 1.5.0,所以我使用了这个 -
defaultConfig {
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
但如果您使用的是 Gradle 2.1.0,请改用此版本
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
然后就可以开始了。我在 xml 中以及以编程方式对其进行了测试。在 xml 文件中,我在我的 ImageView 中使用了这个 -
app:srcCompat="@drawable/anim_droid"
// where droid_anim is an animated-vector file containing set of animations to animate different paths of the SVG file
为了以编程方式完成,我使用了这个 -
imageView.setImageResource(R.drawable.anim_droid);
Drawable drawable = imageView.getDrawable();
if (drawable instanceof Animatable) {
((Animatable) drawable).start();
}
希望对您有所帮助!干杯:)
确保您也使用最新的 buildToolsVersion
(如果需要,从 SDK 管理器下载)。
样本Gradle:
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
dependencies {
...
compile 'com.android.support:appcompat-v7:24.0.0'
...
}
}
我已经通过设置修复了..
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'
而不是 ContextCompat.getDrawable ,只需使用 AppCompatDrawableManager.get().getDrawable .
这应该适用于高于 23 的版本。+
使用:
compileSdkVersion 24
buildToolsVersion '24.0.1'
我在 运行 时崩溃了,直到我删除了行
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
来自我的申请 guild.gradle
这似乎混淆了较新版本的 SDK
希望这能让其他人头疼
将android:src
替换为app:srcCompat
在我将 Gradle 依赖项更新到最新版本但忘记更新项目的 buildToolsVersion 后,我在 Android Studio 2.2 中遇到了同样的错误。
我改了:
compile 'com.android.support:appcompat-v7:22.2.1'
至:
compile 'com.android.support:appcompat-v7:24.2.1'
虽然 buildToolsVersion 保持在 "22.0.1"
,如下所示:
buildToolsVersion "22.0.1"
所以我所做的就是像这样将 buildToolsVersion 更新为 24:
buildToolsVersion "24"
因为之前是用 SDK 管理器下载的。因此,请从 SDK Manager 检查最新的 buildToolsVersion
,看看它是否与依赖项版本匹配。
希望这对某人有所帮助。
对我来说有用的是...在我的 xml 矢量可绘制对象的命名空间声明中从 'https' 中删除 's'。
That XML came from Google Android documentation itself. 您可以在屏幕截图中看到 xmlns 是 'http' 但在下面的可复制粘贴版本中,它是 'https.'
这将停止 Vector Asset 查看器中的渲染错误,但您仍然看不到任何东西,原因我不明白。它应该看起来像一个扳手。
如果您右键单击 drawables 文件夹并 "New --> Vector Asset" 您会得到一个可用的 android 图标资源。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>
我的设计和我的 appcompat-v7 都使用 23.2.1 和 buildToolsVersion 23.0.2。
这个就在.'material icons'接口文件生成的扳手-->新建-->矢量资源-->material图标(然后点击图标和select扳手)是:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z"/>
</vector>
This online utility 我没问题。使用 Chrome。它将 SVG 转换为 android 矢量绘图。
我也遇到了这个问题,我是怎么做的:
变化
compileSdkVersion 24
buildToolsVersion "22.0.1"
到
compileSdkVersion 24
buildToolsVersion "24.0.1"
问题是:
/VdcInflateDelegate: Exception while inflating <vector>
解决方案:
已更改 compileSdkVersion 23 buildToolsVersion "23.0.2"
至 compileSdkVersion 24 buildToolsVersion "24.0.2"
解决方案代码:
compileSdkVersion 24
buildToolsVersion '24.0.1'
使用上面的代码我解决了问题
只需在 build.gradle 中添加以下依赖项。这将解决您的问题。我正在使用 25.0.2 buildToolsVersion.
编译'com.android.support:support-vector-drawable:25.3.0'
我把FragmentActivity改成了AppCompatActivity,问题解决了。我的环境是:
compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"
就我而言 this 解决方案有效:
Use
android:theme="@style/TextLabelWhite"
just like in your xml. Change style parent to your AppTheme style,
like:
<style name="TextLabelWhite" parent="AppTheme">
即使我在我的 gradle 中启用了矢量支持并拥有最新版本的 gradle、构建工具、支持库和 Android 工作室,我仍然遇到错误.
这是针对我的情况的修复:
AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);
要抑制 lint 警告,请添加此 @SuppressLint("RestrictedApi")
尝试使用:
编译 'com.android.support:design:23.1.1'
而不是:
编译 "com.android.support:appcompat-v7:23.2.0"
还在 buildToolsVersion '26.0.2'
上观察到
降级到buildToolsVersion '25.0.3' 有效.
对于 buildToolsVersion“26.0.2”:尝试 AppCompat for Widgets
示例:TextView -> android.support.v7.widget.AppCompatTextView
(对于旧 Android 版本支持)
当设备由于内存不足 无法膨胀可绘制对象 时,也在低端设备上观察到。(即使可绘制对象存在于您的 res->drawable 目录中):尝试用不太复杂的更改您的可绘制对象。
插入到 build.gradle(模块:app):
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:26.1.0'
}
之后,使用下面的代码,在你的 AppActivity:
AppCompatResources.getDrawable(getContext(), R.drawable.ic_your);
如果可用,请使用 app:srcCompat 代替 android:src 和 android:背景,在XML资源文件
遇到同样的问题,此解决方案解决了它。
在你的class中做
public class YourClass extends xxx {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
...
}
如果还没有,也将其添加到您的 gradle 文件中。
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
由于 TextView 复合可绘制对象中的矢量可绘制对象,我的应用程序在 API<17 时崩溃。我的解决方案是停止将 Compound Drawables 与 Text View 一起使用,而改用 ImageView。
google 建议:
- vectorDrawables.useSupportLibrary = 真
- 使用app:SrcCompat属性
用于矢量绘图。
- 在代码中使用setImageResource()来设置图标。
我尝试将我的支持库更新到 23.2.0 并遇到此错误:
Exception while inflating <vector>
org.xmlpull.v1.XmlPullParserException: Binary XML file line #17<vector> tag requires viewportWidth > 0
at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:535)
at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472)
at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:829)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:303)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
和
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chotot.vn.dev/com.chotot.vn.v2.activities.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2091)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:897)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:837)
at android.content.res.Resources.loadDrawable(Resources.java:2087)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
我的activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/f_actionbar"
android:name="com.chotot.vn.fragments.ActionBarFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<android.support.v7.widget.Toolbar
android:id="@+id/main_tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_alignParentTop="true"
android:background="@color/action_bar_bg">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
android:id="@+id/main_action_bar_layout"
layout="@layout/layout_actionbar_custom_search"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="top" />
<LinearLayout
android:id="@+id/main_action_bar_layout_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/main_action_bar_layout"
android:orientation="vertical" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
<FrameLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/main_tool_bar" />
</RelativeLayout>
我该如何解决?
在您的 build.gradle 文件中使用此代码
//for Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
如果您使用的是 Gradle 1.5,您将改为使用
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
我想可能是他们在其他 lib.found here
下面使用了矢量可绘制紧凑型有同样的问题。对我来说实际上升级构建工具版本有帮助:
buildToolsVersion "23.0.2"
请删除应用程序兼容性gradle(
compile "com.android.support:appcompat-v7:23.2.0"
)
并替换为支持设计 (compile 'com.android.support:design:23.1.1'
) 这将解决问题
当我构建我的应用程序的新版本时,我对这个完全相同的问题感到惊讶。我对 appcompact 的依赖设置为自动更新。
compile 'com.android.support:appcompat-v7:23+'
因此,一旦有新版本可用(在本例中为 23.2.0 版),它将取代您正在构建的旧版本。
因此您可以切换回以前版本的 appcompat 库(快速修复):
compile 'com.android.support:appcompat-v7:23.1.1'
或者保留当前库版本并使用generatedDensities
:
classpath 'com.android.tools.build:gradle:1.5.0'
在棒棒糖之前的设备上,您需要创建选择器才能在 ImageView 的其他位置使用 VectorDrawable
app:srcCompat="@drawable/your_vector_drawable"
选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/your_vector_drawable" />
</selector>
那么你可以传递这个选择器,例如对于 xml
中的 TextView drawableLeft/drawableRight<TextView
android:gravity="center_vertical"
android:drawableLeft="@drawable/selector_your_vector_drawable"
android:drawableStart="@drawable/selector_your_vector_drawable"
android:drawableRight="@drawable/selector_your_vector_drawable"
android:drawableEnd="@drawable/selector_your_vector_drawable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/your_string" />
我遇到了这个问题,但更新到以下版本为我解决了这个问题:
classpath 'com.android.tools.build:gradle:1.5.0'
并且:
buildToolsVersion "23.0.2"
模块依赖:
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'
compile 'com.google.android.gms:play-services:8.4.0'
遇到api19更新到23.2.0时的崩溃问题。 我通过将版本更新到 23.2.1 解决了这个问题。(回答这个问题时的最新版本。尝试更新到最新版本,也许 google 已修复它)
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support:23.2.1'.
我有这个问题,但更新到版本 build:grade:
classpath 'com.android.tools.build:gradle:1.5.0'
并且:
buildToolsVersion "23.0.2"
成功!
我通过替换
解决了这个问题dependencies {
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:design:23.2.0'
}
和
dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
}
我通过更换
解决了这个问题compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'
和
compile 'com.android.support:appcompat-v7:23.0.2'
compile 'com.android.support:support-v4:23.0.2'
您也可以升级到 23.4.0
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
}
并使用标志手动启用此功能:
static
{
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
在使用向量的 activity 中。
在Gradle (gradle:2.1.0):
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
布局中:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srcCompat="@drawable/you_vector_drawable"/>
上述几种解决方案的组合对我有用。这是我所做的 -
像这样项目的build.gradle
中将gradle版本从1.3.0更改为1.5.0
classpath 'com.android.tools.build:gradle:1.5.0'
更新 app
的build.gradle
中的以下内容
buildToolsVersion "23.0.2"
将模块依赖项从 23.2.0 更新到 23.4.0:
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-vector-drawable:23.4.0'
compile 'com.android.support:animated-vector-drawable:23.4.0'
现在,根据您使用的 gradle 版本,使用以下两个代码段之一。 因为我使用的是 gradle 1.5.0,所以我使用了这个 -
defaultConfig {
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
但如果您使用的是 Gradle 2.1.0,请改用此版本
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
然后就可以开始了。我在 xml 中以及以编程方式对其进行了测试。在 xml 文件中,我在我的 ImageView 中使用了这个 -
app:srcCompat="@drawable/anim_droid"
// where droid_anim is an animated-vector file containing set of animations to animate different paths of the SVG file
为了以编程方式完成,我使用了这个 -
imageView.setImageResource(R.drawable.anim_droid);
Drawable drawable = imageView.getDrawable();
if (drawable instanceof Animatable) {
((Animatable) drawable).start();
}
希望对您有所帮助!干杯:)
确保您也使用最新的 buildToolsVersion
(如果需要,从 SDK 管理器下载)。
样本Gradle:
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
dependencies {
...
compile 'com.android.support:appcompat-v7:24.0.0'
...
}
}
我已经通过设置修复了..
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'
而不是 ContextCompat.getDrawable ,只需使用 AppCompatDrawableManager.get().getDrawable .
这应该适用于高于 23 的版本。+
使用:
compileSdkVersion 24
buildToolsVersion '24.0.1'
我在 运行 时崩溃了,直到我删除了行
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
来自我的申请 guild.gradle
这似乎混淆了较新版本的 SDK
希望这能让其他人头疼
将android:src
替换为app:srcCompat
在我将 Gradle 依赖项更新到最新版本但忘记更新项目的 buildToolsVersion 后,我在 Android Studio 2.2 中遇到了同样的错误。
我改了:
compile 'com.android.support:appcompat-v7:22.2.1'
至:
compile 'com.android.support:appcompat-v7:24.2.1'
虽然 buildToolsVersion 保持在 "22.0.1"
,如下所示:
buildToolsVersion "22.0.1"
所以我所做的就是像这样将 buildToolsVersion 更新为 24:
buildToolsVersion "24"
因为之前是用 SDK 管理器下载的。因此,请从 SDK Manager 检查最新的 buildToolsVersion
,看看它是否与依赖项版本匹配。
希望这对某人有所帮助。
对我来说有用的是...在我的 xml 矢量可绘制对象的命名空间声明中从 'https' 中删除 's'。
That XML came from Google Android documentation itself. 您可以在屏幕截图中看到 xmlns 是 'http' 但在下面的可复制粘贴版本中,它是 'https.'
这将停止 Vector Asset 查看器中的渲染错误,但您仍然看不到任何东西,原因我不明白。它应该看起来像一个扳手。
如果您右键单击 drawables 文件夹并 "New --> Vector Asset" 您会得到一个可用的 android 图标资源。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>
我的设计和我的 appcompat-v7 都使用 23.2.1 和 buildToolsVersion 23.0.2。
这个就在.'material icons'接口文件生成的扳手-->新建-->矢量资源-->material图标(然后点击图标和select扳手)是:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z"/>
</vector>
This online utility 我没问题。使用 Chrome。它将 SVG 转换为 android 矢量绘图。
我也遇到了这个问题,我是怎么做的: 变化
compileSdkVersion 24
buildToolsVersion "22.0.1"
到
compileSdkVersion 24
buildToolsVersion "24.0.1"
问题是:
/VdcInflateDelegate: Exception while inflating <vector>
解决方案:
已更改 compileSdkVersion 23 buildToolsVersion "23.0.2"
至 compileSdkVersion 24 buildToolsVersion "24.0.2"
解决方案代码:
compileSdkVersion 24
buildToolsVersion '24.0.1'
使用上面的代码我解决了问题
只需在 build.gradle 中添加以下依赖项。这将解决您的问题。我正在使用 25.0.2 buildToolsVersion.
编译'com.android.support:support-vector-drawable:25.3.0'
我把FragmentActivity改成了AppCompatActivity,问题解决了。我的环境是:
compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"
就我而言 this 解决方案有效:
Use
android:theme="@style/TextLabelWhite"
just like in your xml. Change style parent to your AppTheme style, like:
<style name="TextLabelWhite" parent="AppTheme">
即使我在我的 gradle 中启用了矢量支持并拥有最新版本的 gradle、构建工具、支持库和 Android 工作室,我仍然遇到错误.
这是针对我的情况的修复:
AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);
要抑制 lint 警告,请添加此 @SuppressLint("RestrictedApi")
尝试使用: 编译 'com.android.support:design:23.1.1'
而不是: 编译 "com.android.support:appcompat-v7:23.2.0"
还在 buildToolsVersion '26.0.2'
上观察到降级到buildToolsVersion '25.0.3' 有效.
对于 buildToolsVersion“26.0.2”:尝试 AppCompat for Widgets 示例:TextView -> android.support.v7.widget.AppCompatTextView (对于旧 Android 版本支持) 当设备由于内存不足 无法膨胀可绘制对象 时,也在低端设备上观察到。(即使可绘制对象存在于您的 res->drawable 目录中):尝试用不太复杂的更改您的可绘制对象。
插入到 build.gradle(模块:app):
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:26.1.0'
}
之后,使用下面的代码,在你的 AppActivity:
AppCompatResources.getDrawable(getContext(), R.drawable.ic_your);
如果可用,请使用 app:srcCompat 代替 android:src 和 android:背景,在XML资源文件
遇到同样的问题,此解决方案解决了它。
在你的class中做
public class YourClass extends xxx {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
...
}
如果还没有,也将其添加到您的 gradle 文件中。
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
由于 TextView 复合可绘制对象中的矢量可绘制对象,我的应用程序在 API<17 时崩溃。我的解决方案是停止将 Compound Drawables 与 Text View 一起使用,而改用 ImageView。 google 建议:
- vectorDrawables.useSupportLibrary = 真
- 使用app:SrcCompat属性 用于矢量绘图。
- 在代码中使用setImageResource()来设置图标。