0

我遇到了需要以编程方式将 TextView 的宽度设置为 50 的情况。我需要将此 50 转换为 dp,因为我没有找到任何以编程方式将宽度设置为 dp 的规定。谁能帮我在Android中如何将像素转换为dps。


提前致谢。

4

1 回答 1

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.

于 2013-06-29T16:23:11.667 回答