安卓为什么XML和Java中的ImageView测量不同?
对于ImageView,我有以下XML:
<ImageView
安卓:id="@+id/iv"
安卓:layout_width="12dp"
安卓:layout_height="12dp"
安卓:src="@drawable/crossy"
安卓:scaleType="fitXY" />
当我运行以下代码时:
iv = (ImageView) findViewById(R.id.iv);
Log.i("IV WxH", ""+iv.getWidth() + " " + iv.getHeight());
LogCat
显示了以下内容:
02-05 23:56:04.116: I/IV WxH(10211): 24 24
如何确保代码中的高度和宽度与XML中的高度和宽度相同
# 1 楼答案
XML文件中的
dp
表示“与密度无关的像素”的测量单位,而Java代码中记录的值告诉您以实际像素为单位的测量值px=dp*(dpi/160)
在这种情况下,你有一个320 dpi的屏幕,所以每1个密度无关的像素是2个物理像素
如果希望以物理像素为单位进行测量,请在XML文件中将
dp
替换为px
。但是,请注意,在dpi较低的设备上,Imageview将占据屏幕的较大部分# 2 楼答案
View.getWidth()
和View.getHeight()
在px
中返回,因此转换为dp
dpi因不同屏幕而异,因此请检查MultipleScreen的dpi
将此dp与xml值进行比较