【问题标题】:How to resize vector drawable to device font size如何将可绘制矢量的大小调整为设备字体大小
【发布时间】:2019-01-31 21:51:02
【问题描述】:

是否可以设置矢量可绘制对象以根据设备设置的字体大小自动调整自身大小?每当我在“设置”菜单中更改字体大小时,可绘制的矢量似乎永远不会适应它的大小并且始终保持不变,但文本不会失败。

可绘制

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="48dp" android:width="48dp" android:viewportHeight="24" android:viewportWidth="24">
    <path android:fillColor="#FFFFFF" android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
</vector>

小字体

正常字体大小

大字体

大字体

【问题讨论】:

    标签: android android-drawable android-vectordrawable


    【解决方案1】:

    您可以在矢量可绘制对象的定义中使用sp 单位。 sp单元的全部意义在于,字体正常时1sp == 1dp,而字体放大时1sp大于1dp

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <vector
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:height="48sp" <!-- use sp here instead of dp -->
        android:width="48sp"  <!-- use sp here instead of dp -->
        android:viewportHeight="24"
        android:viewportWidth="24">
    
        <path
            android:fillColor="#FFFFFF"
            android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
    
    </vector>
    

    【讨论】:

    • 是否可以去掉padding,使箭头的顶部与TextView的顶部相同?
    • 该填充内置于矢量资产本身。 viewportWidthviewportHeight 属性定义了绘制矢量的“画布”的大小,但矢量只填充了 12 个单位宽和 7.5 个单位高的矩形。
    • 您可以将pathData 更改为M1.41,0l4.59,4.58l4.59,-4.58l1.41,1.41l-6,6l-6,-6z 并将视口宽度/高度更改为12/7.41 以摆脱“填充”。您必须决定您希望默认尺寸有多大(宽度/高度属性);以前它们只是视口宽度/高度的两倍。
    【解决方案2】:
    • 作为之前的答案,使用 sp 而不是 dp ,,
    • sp更适合文字
    • dp更适合图片

    【讨论】:

      猜你喜欢
      • 2019-02-17
      • 2018-04-07
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      相关资源
      最近更新 更多