如何在位图可绘制对象中保持纵横比

17

如果我使用 fill_vertical 或者 fill_horizontal,我该如何保持宽高比?在这段代码中:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/_toogle_green"
    android:gravity="bottom|fill_vertical"
/>

位图在垂直方向上填充正常,但在水平方向上保持原始宽度,且纵横比被破坏。

我相信这个问题已经被问过了,但我真的找不到,只有针对ImageView或ImageButton的解决方案。但我需要在可绘制对象中实现这个效果。

2个回答

2
尝试这个:
<item>
     <bitmap
          android:gravity="center|bottom|clip_vertical"
          android:src="@drawable/your_image" />
</item>

我只是想保持纵向适应并填充横向,同时保持宽高比不变,这对我的使用情况非常完美。非常感谢 :) - Mohit Singh
4
仅当原始图像实际上比布局元素更大时,这才有效。 - ocramot
你是对的 @ocramot,它不能扩展。对于这种用例,如果你关心图像质量,你应该实现一个更健壮和复杂的图像缩放算法。 - Ionut Negru
@IonutNegru 你知道如何水平填充并在需要时垂直裁剪,同时保持纵横比吗? - rightaway717
@rightaway717 你可以尝试调整重力值。将它们反转应该会给你想要的结果。另一个选择是使用包装器 ImageView(应该提供更多缩放选项)。 - Ionut Negru
@IonutNegru,你的方法已经很接近我所需要的了,但我的图片仍然在水平方向上被拉伸了。我没有找到这篇帖子,所以我自己写了一篇,但是经过数小时的搜索,我仍然很苦恼... https://dev59.com/z1IG5IYBdhLWcg3wzU6B - arnaudambro

-3

3
这是"ImageView"。我需要可用于按钮或其他控件的可绘制对象,在那些无法使用"ImageView"的情况下。 - neworld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接