【发布时间】:2012-10-31 12:46:42
【问题描述】:
当在Button 上应用为背景时,有什么方法可以保持可绘制对象的纵横比(不能使用ImageButton(需要Button 上的文本可能性),不能使用setCompoundDrawables(),因为那也不符合我的要求(我自己做了一个类来支持添加背景,同时仍然保留原来的android默认按钮,另外我需要在按钮中间设置te背景,而不是左、右、上或下)) .
我尝试了ScaleDrawable 的解决方案,但要么我做错了,要么它不起作用:
Bitmap scaled = Bitmap.createScaledBitmap(original, (int)newBmpWidth, (int)newBmpHeight, false);
BitmapDrawable bd = new BitmapDrawable(scaled);
ScaleDrawable sd = new ScaleDrawable(bd, Gravity.CENTER, a, b);
//for a and b I tried lots of different values, ranging from 0.07f to 1000
sd.setLevel(1);
然后我使用ScaleDrawable 作为背景,但它还是被拉伸了。
我也尝试了InsetDrawable,但同样,要么我做错了什么,要么它不起作用,期待第一个:
BitmapDrawable mBitmapDrawable = new BitmapDrawable(mBitmap);
InsetDrawable mInsetDrawable = new InsetDrawable(mBitmapDrawable, mLeftOffset, 0, mRightOffset, 0);
然后我使用InsetDrawable 作为背景,但无论如何这也会被拉伸。
有什么方法可以在Button 上应用背景但保持纵横比? 我可以找到很多ImageButtons 的答案,但遗憾的是Button 没有@987654334 @ 或 setScaleType() 方法。
【问题讨论】:
-
图片的分辨率(以像素为单位)是多少?你也想要
Button的默认背景吗? -
@Gagan 根据我的尝试,这取决于 40x30 到 256x256 像素之间的几个。是的。
-
一般
Buttons 的宽度不同,但高度保持不变。所以要保持图像的纵横比不变是相当困难的。 -
@Gagan 好吧,ImageButton 可以完成上述所有操作,包括缩放和保持纵横比,但我不能在这些上应用文本。我现在正在尝试是否可以将文本绘制到画布上并使其成为 ImageButtons
标签: android button background aspect-ratio