我在Android中使用SVG导入的图像,但我无法使用ImageView调整其大小,图像就是这样。
导入的drawable是:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="208dp"
android:height="208dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#8A1D3043"
android:pathData="...lines and curves..."/>
</vector>
当我更改ImageView(它所附加的位置)layout_height和layout_width时,我得到了这个:
<ImageView
android:layout_height="100dp"
android:layout_width="100dp"
app:layout_width="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
app:layout_height="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
android:layout_gravity="center_horizontal"
android:contentDescription="@{message}"
android:src="@{image}"
android:scaleType="center"
tools:src="@drawable/img_message_private"/>
请注意,向量的高度和宽度都是208dp,但我的ImageView必须用作100dp。必须使用dataBind动态调整View的大小,因此我认为不能选择多个向量。
显然,图像无法使用ImageView进行缩放。有人知道为什么以及如何轻松解决它?
答案 0 :(得分:6)
问题出在以下几行:
android:scaleType="center"
Here's a link to the documentation您可以在其中看到此内容的定义:
将图像置于视图中心,但不执行缩放。
请尝试使用其他scaleType,例如:
android:scaleType="fitCenter"
答案 1 :(得分:0)
我遇到了同样的问题。
如果您有原始的SVG。在Inkspace(或任何其他矢量编辑器)中打开它。
现在转到“文件”->“文档属性”并展开“将页面调整为内容大小...”,然后单击“将页面调整为图形或选择大小”。
现在关闭窗口并保存SVG。
使用矢量工具将其导入android,并使用任意宽度和高度。它将采用图像视图的宽度和高度。另外,不要忘记将比例类型更改为FitXY。