如何将可绘制的矢量调整为设备字体大小

How to resize vector drawable to device font size

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

可绘制

<?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>

小字体

正常字号

大字体

超大字体

您可以在矢量可绘制对象的定义中使用 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>
  • 如上一个答案使用 sp 而不是 dp ,
  • sp更适合文字
  • dp更适合图片