Есть ли способ сохранить соотношение сторон чертежа при применении в качестве фона на Button
(нельзя использовать ImageButton
(нужна возможность для текста на Button
), нельзя использовать setCompoundDrawables()
, потому что это также не соответствует моим требованиям (я сделал свой собственный класс для поддержки добавления фона, сохраняя при этом исходную кнопку по умолчанию для Android, плюс мне нужно установить фон в середине кнопки, а не слева, справа, сверху или снизу)).
Я попробовал решение с 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
нет методов setImageBitmap()
или setScaleType()
.
Button
? - person Gagan   schedule 31.10.2012Button
s меняется, но высота остается постоянной. Так что будет довольно сложно сохранить соотношение сторон вашего изображения нетронутым. - person Gagan   schedule 31.10.2012