我使用一个带有图像作为背景的按钮,这个图像的大小为30x29,但它的大小和放大了x2(我认为)。这是我的按钮的XML代码:
<Button
android:id="@+id/buttonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginTop="10dp"
android:background="@drawable/bouton_back"
android:maxHeight="30dp"
android:maxWidth="30dp" />
在Java中:
backButton = (Button) findViewById(R.id.buttonBack);
这有什么问题?我对其他按钮做同样的事情,没有问题......谢谢。
答案 0 :(得分:1)
我认为这可能是文件夹问题。你把图像文件放在哪里? (如果你在drawable-hdpi
)
修改
ps - 还有一个dp单位的东西,它与像素无关。
答案 1 :(得分:1)
你正在使用背景属性,android将根据dpi中的设备重新分配来拉伸你的图像( ldpi , mdpi , hdpi 和 xhdpi 屏幕),如果您将图像放在drawable-mdpi文件夹中,您的图像将根据此系数拉伸
答案 2 :(得分:1)
您是否使用多个密度在资源中提供bouton_back
?使用dp
单位来调整按钮大小是不够的;您还必须provide multiple sizes您的图片:
转换公式如下:
px = dp * (dpi / 160)
px
是最终图像尺寸(以像素为单位),dp
是与密度无关的单位所需的尺寸,dpi
是目标密度。
使用mdpi
图像的像素大小作为基线,简化此公式:
ldpi = mdpi * 0.75
hdpi = mdpi * 1.5
xhdpi = mdpi * 2.0
回到示例代码,如果你想要一个30dp×30dp的按钮,你应该为每个密度提供图像: