在java代码中,我们可以通过LayoutParams这个类来实现动态的修改UI的大小。但是问题是,Android提供了多种长度单位(px,dp等)。
    默认情况下,LayoutParams结构设定width和height的单位是px,那我能否把单位设定为dp呢?

解决方案 »

  1.   

    我记得是可以的,试试就知道了。dp是和密度相关的单位。px是按像素算的
      

  2.   

    但其实这样的修改操作只是为了单一的分辨率而言的,如果自适应,那还是通过控制布局文件来改变大小吧,比如使用reletivelayout
      

  3.   

    在代码中设定单位都是px,要与dp对应请先进行单位换算
      

  4.   

        我目前的解决方案是这样的:
         在res/values目录下建立dimension.xml文件然后再这个文件中声明我要的高度:
    <dimen name="Item_Height">65dp</dimen>
        然后,在java文件中这样调用:
        int ItemHeight = mContext.getResources().getDimensionPixelSize(R.dimen.Item_Height);
        这样,Android就会自动的帮我把dp单位根据当前的屏幕密度,计算为px单位。
        不过,dp单位被计算为px单位的时候,会自动把小数点的部分丢掉,所以实际上,这里还是有误差存在的,最终出来的界面效果,有点差强人意啊。
      

  5.   

    用getDimension得到float值,自己再转换为int呢?这样效果会不会好点?