我想将TextView的文本大小设置为与屏幕宽度成比例。我正在使用此代码获得屏幕宽度:
public static int getScreenWidth(Context context) {
if (SCREEN_WIDTH == 0) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
SCREEN_WIDTH = outMetrics.widthPixels;
}
return SCREEN_WIDTH;
}
当我将字体大小设置为屏幕宽度的比例时
textView.setTextSize(screenWidth / something);
我在不同的设备上得到不同的结果,特别是Samsung GT-I9000(android 2.3.3)和Nexus 7(android 4.3)。
但是我通过这种方式成功地做到了:
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,
Utils.pixelsToDip(context, screenWidth / something));
这很奇怪,因为基本上它就像乘以并除以相同的值。
这是pixelsToDip方法:
public static float pixelsToDip(Context context, float px) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / (metrics.densityDpi / 160f);
return dp;
}
有谁知道这里有什么问题?也许pixelToDip方法有一些缺点,或者我对尺寸单位有误解?