我想在Android Studio中为 ImageView 设置一些 vectorDrawables 。
我可以轻松设置png和jpg drawable但是当我想设置VectorDrawable时,它在imageview上不起作用。
img.setImageResource(R.drawable.ic_home);
ic_home是VectorDrawable,此代码不起作用。
答案 0 :(得分:82)
如果您想使用矢量drawable(比API 21更少OR),请执行以下操作:
以编程方式设置图像(例如,在您的活动中):
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);
答案 1 :(得分:17)
根据官方android developer blog,vectorDrawables在运行时没有对setImageResource()方法进行任何更改。
如果您在运行时更改drawable,您将能够使用 相同 setImageResource() 方法和以前一样 - 没有变化。使用AppCompat和app:srcCompat 是将矢量drawables集成到你的中最简单的方法 应用
有关详细信息,请查看Google Developer撰写的这篇精彩文章AppCompat — Age of the vectors。
答案 2 :(得分:17)
对于那些想要以编程方式加载矢量drawable用于其他用途的人,例如设置drawableLeft或其他用途,您可以使用:
Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);
其中上下文是AppCompatActivity。
答案 3 :(得分:11)
如果您关注向后兼容性,那么您应该使用AppCompatImageView
代替pf图像视图。请仔细阅读以下代码。
<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);
它将提供app:srcCompat
的视角。
答案 4 :(得分:3)
使用Java代码:
SELECT `tbl_leave`.`id`, `tbl_leave`.`staff_id`, `tbl_leave`.`type_id`, `tbl_leave`.`start_date`, `tbl_leave`.`end_date`,
`tbl_leave`.`total_days`, `tbl_leave`.`reason`, `tbl_leave_type`.`type`, `tbl_employment`.`com_id` as `comid`, `tbl_staff`.`name`
FROM `tbl_leave` JOIN
`tbl_leave_type`
ON `tbl_leave_type`.`id` = `tbl_leave`.`type_id` JOIN
`tbl_employment`
ON `tbl_employment`.`staff_id` = `tbl_leave`.`staff_id` JOIN
`tbl_staff`
ON `tbl_staff`.`id` = `tbl_leave`.`staff_id`
和XML使用:
formate_img.setImageResource(R.drawable.ic_text);//ic_text is a Vector Image
答案 5 :(得分:2)
我在回收站视图中有一个向量,我正在使用img.setImageResource(R.drawable.ic_home)
,它没有像其他图像在回收站视图的某个项目中形成一样正常工作。然后我使用了img.setImageDrawable(activity.getResources().getDrawable(R.drawable.ic_home))
这个工作。
答案 6 :(得分:1)
使用此:
android.support.v7.widget.AppCompatImageButton,
android.support.v7.widget.AppCompatImageView,
android.support.v7.widget.AppCompatTextView
而不是ImageButton
,ImageView
等
如果使用矢量类型图像。主要用于自定义视图。
答案 7 :(得分:-2)