Android Drawable从按钮边框溢出

Android Drawable从按钮边框溢出,android,Android,我使用以下代码将图像缩放到150dpx150dp,并放置在150dpx150dp按钮内,但图像在所有维度上都溢出了按钮: float densityScale = getResources().getDisplayMetrics().density; float scaledImageWidth = 150 * densityScale; float scaledImageHeight = 150 * densityScale; Drawable image

我使用以下代码将图像缩放到150dpx150dp,并放置在150dpx150dp按钮内,但图像在所有维度上都溢出了按钮:

    float densityScale = getResources().getDisplayMetrics().density;
    float scaledImageWidth = 150 * densityScale;

    float scaledImageHeight =  150 * densityScale;
    Drawable image = getResources().getDrawable(R.drawable.user_photo);
    Bitmap bitmap = ((BitmapDrawable)image).getBitmap();
    Drawable scaledImage = new BitmapDrawable(Bitmap.createScaledBitmap(bitmap, (int)scaledImageWidth, (int)scaledImageHeight, true));
    scaledImage.setBounds(0, 0, (int)scaledImageWidth, (int)scaledImageHeight);
    ((Button)findViewById(R.id.button)).setCompoundDrawables(null, scaledImage, null, null);
    ((Button)findViewById(R.id.button)).setPadding(0,0,0,0);
按钮和图像大小相同。为什么会发生此溢出?如何修复


我知道我可以使用ImageButton,但我想使用button drawable,因为有些情况下我需要添加文本等。

您需要一个较小的drawable。按钮已具有具有特定填充的背景


我怎样才能去掉那个填充物?或者我应该对图像进行多大的缩放以使其完全适合?有关于这些值的Android文档吗?下面是。左右两侧似乎有6像素,顶部有3像素,底部有10像素。复合可拉伸材料在视图上居中,而不是在按钮视觉中心,因此您无法真正使其精确匹配。刚刚意识到您正在将您的可拉伸材料设置为顶部复合可拉伸材料。在文本的侧面绘制复合绘图。你们可以添加负片复合可画填充,但你们需要知道你们的文本高度,要正确居中是很复杂的。请参阅文章。