#android #layout #kotlin #androidx
#Android #макет #kotlin #androidx
Вопрос:
Я хочу раздуть, 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
android:id="@ id/layout_ico"
android:layout_width="@dimen/t_icon_size"
android:layout_height="@dimen/t_icon_size"
android:background="@drawable/vector_ico"/>
Векторная иконка (пример 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>
Комментарии:
1. опубликуйте свой XML-файл
2. мартин, покажите ваши gradle.build, gradle.properties и тему, которую вы используете, и последний раз проверьте, находится ли ваша иконка в папке для рисования, а не в drawable 24 и т.д.
Ответ №1:
Обновляли ли вы свой файл gradle при использовании AppCompatImageView?
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
И в вашем макете
<androidx.appcompat.widget.AppCompatImageView
...
app:srcCompat="@drawable/something" />
Комментарии:
1. Просто используйте androidx.appcompat.widget. Просмотрите appcompatimageи выберите свой вариант рисования с помощью srcCompat <androidx.appcompat.widget. AppCompatImageView … приложение: srcCompat=»@drawable / что-то» />
Ответ №2:
Кроме включения следующей строки в ваш файл gradle:
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
Вам также необходимо добавить следующую строку в свой класс приложения:
class App : Application() {
override fun onCreate() {
super.onCreate()
...
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
}
}