Обновите библиотеку поддержки Android до 23.2.0, причина ошибки: XmlPullParserException Бинарный XML-файл, строка #17 Для тега<vector> требуется 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.access$600(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.access$600(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.access$600(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.access$600(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.access$600(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.access$600(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>
Как я могу это исправить?
31 ответ
Используйте этот код в вашем файле 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 здесь
Вы также можете обновить до 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);
}
внутри деятельности, которая использует векторы.
Источник: Возраст векторов
Пожалуйста, удалите grad appcompat (compile "com.android.support:appcompat-v7:23.2.0"
) и заменить конструкцией поддержки (compile 'com.android.support:design:23.1.1'
) это решит проблему
На устройствах перед леденцом на палочке вам нужно создать селектор для использования VectorDrawable в другом месте из ImageView
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>
Затем вы можете передать этот селектор, например, для TextView drawableLeft/drawableRight в xml
<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" />
Вместо ContextCompat.getDrawable, просто используйте AppCompatDrawableManager.get(). GetDrawable.
Это должно работать на версиях выше 23.+
С помощью:
compileSdkVersion 24
buildToolsVersion '24.0.1'
Я разбился во время выполнения, пока я не удалил линию
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
из моего приложения guild.gradle
Это, кажется, путает более новую версию SDK
Надеюсь, это спасет кого-то еще от головной боли
Я исправил эту проблему, заменив
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'
}
Сочетание нескольких из вышеперечисленных решений сработало для меня. Вот что я сделал -
Изменить версию Gradle с 1.3.0 на 1.5.0 в build.gradle
такого проекта
classpath 'com.android.tools.build:gradle:1.5.0'
Обновите ниже вещи в 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 "23.0.2"
Столкнуться с проблемой сбоя на API 19 при обновлении до 23.2.0. Я решил эту проблему, обновив версию до 23.2.1.(Последняя версия, когда отвечаете на этот вопрос. Попробуйте обновить до последней версии, возможно, Google это исправило)
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support:23.2.1'.
Убедитесь, что вы используете последнюю версию buildToolsVersion
а также (при необходимости загрузите из менеджера SDK).
Образец Gradle:
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
dependencies {
...
compile 'com.android.support:appcompat-v7:24.0.0'
...
}
}
В 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:grade:
classpath 'com.android.tools.build:gradle:1.5.0'
А также:
buildToolsVersion "23.0.2"
Успех!
Я был удивлен этой же проблемой, когда создал новую версию своего приложения. Моя зависимость от appcompact была установлена на автоматическое обновление.
compile 'com.android.support:appcompat-v7:23+'
Поэтому, как только будет доступна новая версия (в данном случае версия 23.2.0), она заменит старую, с которой вы собирались.
Таким образом, вы можете либо вернуться к предыдущей версии библиотеки appcompat (Quick fix):
compile 'com.android.support:appcompat-v7:23.1.1'
Или сохраните текущую версию библиотеки и воспользуйтесь ответом Ajinkya, как объяснил Google в примечании к выпуску версии 23.2.0. Если вы выберете более позднюю версию, не забудьте обновить инструмент сборки Gradle до версии 1.5.0, или вы не можете использовать новые параметры, такие как generatedDensities
:
classpath 'com.android.tools.build:gradle:1.5.0'
Столкнулся с той же проблемой, это решение исправило это.
В вашем классе просто делайте
public class YourClass extends xxx {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
...
}
а также добавьте это в свой файл Gradle, если еще нет.
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Я исправил это, установив..
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'
Я тоже столкнулся с этой проблемой, что я и сделал: изменить
compileSdkVersion 24
buildToolsVersion "22.0.1"
в
compileSdkVersion 24
buildToolsVersion "24.0.1"
Вставьте в build.gradle(Модуль: приложение):
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:26.1.0'
}
После, используйте код ниже, в вашем AppActivity:
AppCompatResources.getDrawable(getContext(), R.drawable.ic_your);
Где доступно, используйте приложение:srcCompat вместо android:src и android: background, в файле ресурсов XML
Я получил эту же ошибку в Android Studio 2.2 после того, как обновил свои зависимости Gradle до последних версий, но забыл обновить buildToolsVersion моего проекта.
Я изменился:
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 Manager. Так что проверьте последние buildToolsVersion
из SDK Manager и посмотрите, соответствует ли он версии зависимостей.
Надеюсь, это кому-нибудь поможет.
Несмотря на то, что в моем gradle включена поддержка vector и у меня установлена последняя версия gradle, инструментов сборки, библиотеки поддержки и Android studio, я все равно получил ошибку.
Вот исправление для моего случая:
AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);
чтобы подавить предупреждение о ворсе добавить это @SuppressLint("RestrictedApi")
Мое приложение аварийно завершилось в API<17 из-за векторной прорисовки в составной прорисовке TextView. Мое решение состояло в том, чтобы прекратить использовать составные Drawables с текстовыми представлениями и использовать ImageView вместо этого. Как Google рекомендует:
- vectorDrawables.useSupportLibrary = true
- Используйте атрибут app:SrcCompat для векторных рисунков.
- Используйте setImageResource() в коде для установки значков.
В моем случае это решение сработало:
использование
android:theme="@style/TextLabelWhite"
так же, как в вашем XML. Измените родительский стиль на свой стиль AppTheme, например:
<style name="TextLabelWhite" parent="AppTheme">
Для меня то, что сработало... удаляло 's' из 'https' в объявлении пространства имен моего вектора в формате xml.
Этот XML взят из самой документации Google Android. Вы можете видеть на скриншоте, что xmlns - это "http", но в нижеприведенной для копирования версии это "https".
Это остановит ошибки рендеринга в средстве просмотра векторных активов, но вы все равно ничего не увидите по причинам, которые я не получаю. Это должно выглядеть как гаечный ключ.
Если вы щелкнете правой кнопкой мыши по папке drawables и выберите "New -> Vector Asset", вы получите активную иконку андроида.
<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.
Это только что. Ключ, созданный файлом интерфейса значков материалов -> новый -> векторный ресурс -> значок материала (затем щелкните значок и выберите ключ):
<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>
Эта онлайн-утилита была в порядке со мной. Используйте Chrome. Он преобразует SVG в векторной графике Android.
Попробуйте использовать: скомпилируйте '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 для виджетов Пример: TextView -> android.support.v7.widget.AppCompatTextView(для поддержки более старой версии Android). Также наблюдается на устройствах нижнего уровня, когда устройство не может накачать рисованные объекты из-за памяти нехватка.(Даже если в вашем res->drawable dir есть ничья): попробуйте заменить вашу ничью на менее сложные.
Я исправил проблему, заменив
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'
У меня была эта проблема, но обновление до версий ниже исправило это для меня:
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'
Я изменил FragmentActivity на AppCompatActivity, проблема решена. Моя среда это:
compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"
проблема была:
/VdcInflateDelegate: Exception while inflating <vector>
решение:
изменено compileSdkVersion 23 buildToolsVersion "23.0.2"
в compileSdkVersion 24 buildToolsVersion "24.0.2"
код решения:
compileSdkVersion 24
buildToolsVersion '24.0.1'
используя этот код, я решил проблему