9-patch - 缩小时保持不可拉伸区域的 height/width 比率

9-patch - Conservation of the height/width ratio of the non-stretchable area when scaling down

我有以下9个补丁文件作为cardview的背景:

为了将图像缩放到背景,我在我的 ImageView 上使用缩放类型 "fitXY" :

          <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/background_player_right_elo"
            android:scaleType="fitXY"/>                          

当卡片尺寸大于图像尺寸时效果很好。但是,在我的例子中,图像的高度低于图像的高度 (45dp),结果是失真的:

我可以缩小图像,但它会产生像素化图像。 我不能使用标准图像而不是 9-patch,因为卡的宽度取决于设备屏幕宽度。

在缩小 9 补丁图像时,是否可以保留不可拉伸区域的比例 height/width?

否则,还有其他方法可以得到想要的结果吗?

提前致谢!

根据限制条件,有几种可能的答案:

  1. 如果结果不太像素化,则减小 9 补丁图像的大小;
  2. 如果您不介意,请增加 CardView 的大小;
  3. 否则,你可以使用两个ImageView:

    • 第一个具有 scaleType "fitXY" 的,将包含一个具有可伸缩背景的 9 补丁图像;
    • 第二个具有 scaleType "centerInside",将仅包含徽标(不是 9 补丁)和透明背景。

示例:

        <!-- ImageView for the 9-patch background -->
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/background"
            android:scaleType="fitXY"/>

        <!-- ImageView for the non 9-patch logo -->
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/logo"
            android:scaleType="centerInside"/>