我想在Android Studio中将一些VectorDrawables设置为ImageView。
我可以轻松地设置png和jpg drawable,但是当我想设置VectorDrawable时,它在imageview上无法工作。
img.setImageResource(R.drawable.ic_home);
ic_home是VectorDrawable类型,但这段代码无法正常工作。
我想在Android Studio中将一些VectorDrawables设置为ImageView。
我可以轻松地设置png和jpg drawable,但是当我想设置VectorDrawable时,它在imageview上无法工作。
img.setImageResource(R.drawable.ic_home);
ic_home是VectorDrawable类型,但这段代码无法正常工作。
imageView.setImageResource(R.drawable.ic_left_arrow_blue);
或通过XML:
app:srcCompat="@drawable/your_vector_name"
在你的应用程序的build.gradle
文件中,你需要包含以下内容:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
如果需要在API 21以下的版本中支持向量图,请在onCreate
中添加以下内容:
And for vector support for less than API 21, add the following to onCreate
:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
setImageResource
可以正常工作。 - user924对于那些想要通过编程方式加载矢量图形以进行其他用途的人,例如设置drawableLeft或其他用途,您可以使用以下方法:
Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);
当上下文是 AppCompatActivity 时。
如需了解更多详细信息,请查看Google Developer的这篇不错的文章“AppCompat-向量年代”。如果您需要在运行时更改可绘制对象,则可以像以前一样使用 setImageResource() 方法-没有变化。使用AppCompat和app:srcCompat是将矢量可绘制对象集成到应用程序中最可靠的方法。
如果你关注向后兼容性,那么你应该使用AppCompatImageView
而不是ImageView。请查看下面的代码。
<android.support.v7.widget.AppCompatImageView
android:id="@+id/iv_about"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:srcCompat="@drawable/ic_vector_image"
/>
Java
AppCompatImageView image = (AppCompatImageView) findViewById(R.id.iv_about);
image.setImageResource(R.drawable.ic_vector_image);
以下代码需要添加到build.gradle中:
android { defaultConfig{ vectorDrawables.useSupportLibrary = true } }
这将为app:srcCompat提供视角。
如果要使用Java代码,可以这样做:
formate_img.setImageResource(R.drawable.ic_text);//ic_text is a Vector Image
对于 XML 的使用,请使用:
<android.support.v7.widget.AppCompatImageView
android:id="@+id/search_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="1"
ads:srcCompat="@drawable/ic_barcode" //for Vector Image
tools:ignore="VectorDrawableCompat" />
我在RecyclerView中使用了一个向量图像,我使用了img.setImageResource(R.drawable.ic_home)
,但它并没有像其他一些项目中的图像那样正常工作。然后我使用了img.setImageDrawable(activity.getResources().getDrawable(R.drawable.ic_home))
,这个方法可以正常工作。
android.support.v7.widget.AppCompatImageButton,
android.support.v7.widget.AppCompatImageView,
android.support.v7.widget.AppCompatTextView
使用矢量类型图像,而不是 ImageButton
、ImageView
等。
主要用于自定义视图。