如何膨胀包含矢量可绘制图标的布局?

时间:2019-03-07 11:37:55

标签: android layout kotlin androidx

我想用layout的背景可绘制对象来填充包含ImageView的{​​{1}}。

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

矢量图标(xml的示例-无法发布确切的图标):

<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"/>

2 个答案:

答案 0 :(得分:0)

使用appcompatImageView时是否已更新gradle文件?

defaultConfig {
   ...
   vectorDrawables.useSupportLibrary = true
}

在您的布局中

<androidx.appcompat.widget.AppCompatImageView
    ... 
app:srcCompat="@drawable/something" />

答案 1 :(得分:0)

除了在gradle文件中包括以下行:

defaultConfig {
 ...
 vectorDrawables.useSupportLibrary = true
}

您还需要在Application类中添加以下行:

class App : Application() {

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

}