我遇到的情况是我需要以编程方式将TextView的宽度设置为50。 我需要将此50转换为dp,因为我没有找到任何以编程方式将宽度设置为dp的规定。任何人都可以帮助我如何在Android中将像素转换为dps。
在此先感谢。
答案 0 :(得分:2)
以下是我很久以前写过的一些实用方法,它们似乎经常派上用场:
/**
* Converts pixel to dip.
*
* @param pixel
* that should be converted.
* @return the converted rounded dip.
*/
private int pixelToDip(int pixel) {
DisplayMetrics displayMetrics = mContext.getResources()
.getDisplayMetrics();
return (int) ((pixel / displayMetrics.density) + 0.5);
}
/**
* Converts dip to pixel.
*
* @param dip
* that should be converted.
* @return the converted rounded pixel.
*/
private int dipToPixel(int dip) {
DisplayMetrics displayMetrics = mContext.getResources()
.getDisplayMetrics();
return (int) ((dip * displayMetrics.density) + 0.5);
}
你要么必须在Context的子类中运行它,要么从某个地方获取Context。我在我的Utility类构造函数中传入一个Context,并将其存储在mContext
。