有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓为什么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中的高度和宽度相同


共 (2) 个答案

  1. # 1 楼答案

    XML文件中的dp表示“与密度无关的像素”的测量单位,而Java代码中记录的值告诉您以实际像素为单位的测量值

    px=dp*(dpi/160)

    在这种情况下,你有一个320 dpi的屏幕,所以每1个密度无关的像素是2个物理像素

    如果希望以物理像素为单位进行测量,请在XML文件中将dp替换为px。但是,请注意,在dpi较低的设备上,Imageview将占据屏幕的较大部分

  2. # 2 楼答案

    View.getWidth()View.getHeight()px中返回,因此转换为dp

         dp = px / (dpi / 160);
    
        int width=View.getWidth();
    
        int widthdp=width/160;
    

    dpi因不同屏幕而异,因此请检查MultipleScreen的dpi

    将此dp与xml值进行比较