Как надуть макет, содержащий векторную иконку? - PullRequest
0 голосов
/ 07 марта 2019

Я хочу накачать layout, содержащий ImageView с vector xml фоном для рисования.

val view = LayoutInflater.from(parent.context).inflate(R.layout.my_layout, parent, false)

Но это вызовет исключение:

android.view.InflateException: Binary XML file line #72: Binary XML file line #72: Error inflating class ImageView
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        ...

Я пытался переместить нарисованный значок в res/drawable-v21/, но, похоже, это проблема самой LayoutInflater.

Я пытался использовать androidx.appcompat.widget.AppCompatImageView вместо ImageView, но это не сработало.

ImageView:

<ImageView
    android:id="@+id/layout_ico"
    android:layout_width="@dimen/t_icon_size"
    android:layout_height="@dimen/t_icon_size"
    android:background="@drawable/vector_ico"/>

Vector Icon (пример xml -не может опубликовать точный значок):

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="64dp"
    android:width="64dp"
    android:viewportHeight="600"
    android:viewportWidth="600" >
    <group
        android:name="rotationGroup"
        android:pivotX="300.0"
        android:pivotY="300.0"
        android:rotation="45.0" >
        <path
            android:name="vectorPath"
            android:fillColor="#000000"
            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
    </group>
</vector>

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Кроме включения следующей строки в ваш файл Gradle:

defaultConfig {
 ...
 vectorDrawables.useSupportLibrary = true
}

Вам также необходимо добавить следующую строку в вашем классе приложения:

class App : Application() {

override fun onCreate() {
    super.onCreate()
    ...
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
}

}

0 голосов
/ 07 марта 2019

Обновили ли вы свой файл Gradle при использовании appcompatImageView?

defaultConfig {
   ...
   vectorDrawables.useSupportLibrary = true
}

А в вашем макете

<androidx.appcompat.widget.AppCompatImageView
    ... 
app:srcCompat="@drawable/something" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...