我想在 Android Studio 中将一些 vectorDrawables 设置为 ImageView。
我可以轻松设置 png 和 jpg 可绘制,但是当我想设置 VectorDrawable 时,它在 imageview 上不起作用。
img.setImageResource(R.drawable.ic_home);
ic_home 是 VectorDrawable,此代码不起作用。
如果您想使用矢量绘图(小于或大于 API 21),只需执行以下操作:
以编程方式设置图像(例如在您的活动中):
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
:
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
对于那些想要以编程方式加载矢量可绘制对象以用于其他用途(例如设置drawableLeft或其他用途)的人,您可以使用:
Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);
其中上下文是 AppCompatActivity。
根据官方 android 开发者博客,矢量绘图运行时 setImageResource() 方法没有变化。
如果您在运行时更改绘图,您将能够使用 相同的 设置图像资源() 方法和以前一样 - 没有改变。使用 AppCompat 和 app:srcCompat 是将矢量绘图集成到您的应用程序中的最简单的方法 应用程序。
有关更多详细信息,请查看 Google Developer 撰写的这篇好文章 AppCompat — 向量的年龄。
如果您担心向后兼容性,那么您应该使用
AppCompatImageView
而不是图像视图。浏览下面的代码:
<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" />
我在回收器视图中有一个向量,我正在使用
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
等
如果使用矢量类型图像。主要用于自定义视图。