当前位置: 代码迷 >> Android >> 在XML布局中用dip为单位设置了某个控件的宽度和高度, 但用java代码生成控件时单位只有int,怎么处理
  详细解决方案

在XML布局中用dip为单位设置了某个控件的宽度和高度, 但用java代码生成控件时单位只有int,怎么处理

热度:62   发布时间:2016-04-28 02:15:06.0
在XML布局中用dip为单位设置了某个控件的宽度和高度, 但用java代码生成控件时单位只有int,怎么办?
RT,某个控件需要java代码动态生成, 想设置宽度和高度,但是单位只有int  --LayoutParams(int width, int height), 怎么和xml中的dip单位对应?
------解决思路----------------------
我记得论坛里有工具类可以转换的。找找吧。
我这边也有一份。
public class DensityUtil {
    /** 
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    }  
  
    /** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  
}

------解决思路----------------------
public int dp2px(int dpVal)
{
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
dpVal, getResources().getDisplayMetrics());
}

public int sp2px(int spVal)
{
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
spVal, getResources().getDisplayMetrics());

}
  相关解决方案