setTextSize的奇怪行为(或者其他东西!)

时间:2014-01-08 14:59:04

标签: android

我想将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方法有一些缺点,或者我对尺寸单位有误解?

0 个答案:

没有答案