【问题标题】:Vectors in Android resized dynamicallyAndroid中的向量动态调整大小
【发布时间】:2016-04-24 08:18:03
【问题描述】:

我在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"/>

注意vector的高和宽都是208dp,但是我的ImageView必须用100dp。我认为必须使用 dataBind 动态调整视图的大小,因此不能选择多个向量。

显然图像不随其 ImageView 缩放。有人知道为什么以及如何轻松绕过它吗?

【问题讨论】:

    标签: android svg svg-android android-vectordrawable


    【解决方案1】:

    问题出在这行:

    android:scaleType="center"
    

    Here's a link to the documentation在哪里可以看到这个的定义:

    图像在视图中居中,但不执行缩放

    尝试使用其他 scaleType,例如:

    android:scaleType="fitCenter"
    

    【讨论】:

    • 就这么简单!谢谢!
    【解决方案2】:

    我遇到了同样的问题。

    如果您有原始 SVG。在 Inkspace(或任何其他矢量编辑器)中打开它。

    现在转到文件 -> 文档属性并展开“将页面大小调整为内容...”,然后单击“将页面大小调整为绘图或选择”。

    现在关闭窗口并保存 SVG。

    使用 Vector 工具将其导入 android 并使用任意宽度和高度。它将采用图像视图的宽度和高度。另外,不要忘记将比例类型更改为 FitXY。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多