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

Posted

技术标签:

【中文标题】Android如何以编程方式调整(缩放)xml矢量图标【英文标题】:Android how to resize (scale) an xml vector icon programmatically 【发布时间】:2016-10-30 04:34:24 【问题描述】:

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

这是我迄今为止所做的,但不起作用

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

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

我目前面临同样的问题。

我正在尝试这样的事情,因为 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);

【讨论】:

【参考方案2】:

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

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

【讨论】:

谢谢。虽然这个解决方案效果很好,但我希望有一个替代方案,我可以直接缩放我的可绘制对象,然后将其放置在 imageview 中,而不会弄乱 imageview 参数本身。我会对其进行研究,如果这无法达到我想要的方式,我会接受你的回答 我建议使用不同的 png 文件作为典型的可绘制文件,不同的设备具有不同的大小。要走的路:) 是的,我知道,但我的重点是使用矢量可绘制对象,这样我就不需要具有不同大小的 png 文件

以上是关于Android如何以编程方式调整(缩放)xml矢量图标的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式调整布局大小(作为动画)

如何以编程方式将 UIImageView 缩放到固定宽度和灵活高度?

如何以编程方式在 Android 中调整麦克风音量

以编程方式增加android地图缩放级别

如何在 Roblox 第一人称视图中以编程方式调整旋转量?

java Android - 以编程方式处理图像缩放/裁剪