在XML布局中用dip为单位设置了某个控件的宽度和高度, 但用java代码生成控件时单位只有int,怎么处理
在XML布局中用dip为单位设置了某个控件的宽度和高度, 但用java代码生成控件时单位只有int,怎么办?
RT,某个控件需要java代码动态生成, 想设置宽度和高度,但是单位只有int --LayoutParams(int width, int height), 怎么和xml中的dip单位对应?
------解决思路----------------------
我记得论坛里有工具类可以转换的。找找吧。
我这边也有一份。
------解决思路----------------------
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());
}
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());
}