Android如何以编程方式调整(缩放)xml矢量图标

时间:2016-06-28 02:42:06

标签: java android android-layout android-studio android-vectordrawable

这让我发疯了。我希望能够以编程方式调整xml矢量可绘制图标的大小,以便在ImageView中使用它。

这是我到目前为止所做的不起作用

Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_marker,null);
drawable.setBounds(0,0,512,512);
imageVenue.setImageDrawable(drawable);

矢量图标ic_marker未调整大小。它只是每次都保留硬编码的宽度和高度值。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以通过编程方式更改imageview的宽度和高度。由于矢量绘图将保留图像的原始质量,这将使所需的输出发生。

ImageView iv = (ImageView) findViewById(R.id.imgview);
int width = 60;
int height = 60;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(params);

答案 1 :(得分:0)

我目前面临同样的问题。

我正在尝试这样的事情,因为ViewParent实际上已经明确设置了高度,所以我使用match_parent并设置了边距。它不会一直工作,因为我只是在RecyclerView的一个视图中使用这个视图...而且我注意到有时我看到带有工件的放大版本,有时是全尺寸,有时有边距,而且更大边距......但如果你在更简单的场景中使用它,它仍然可能适合你。

mImageViewFront.setImageDrawable(vectorDrawable);
final int paddingLR = mImageViewFront.getWidth() / 4;
final int paddingTB = mImageViewFront.getHeight() / 4;
LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.setMargins(paddingLR, paddingTB, paddingLR, paddingTB);
mImageViewFront.setLayoutParams(params);