【问题标题】:Android how to resize (scale) an xml vector icon programmaticallyAndroid如何以编程方式调整(缩放)xml矢量图标
【发布时间】: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 未调整大小。它每次只保留硬编码的宽度和高度值。

有什么想法吗?

【问题讨论】:

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


    【解决方案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 文件
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多