Android: 文字大小设置为所有分辨率

Android: Text size set to all resolution

我将 TextView 的字体大小设置为 15dp

此字体标准适用于移动分辨率,但平板电脑不标准

手机版:i.stack.imgur.com/zqNmw.png

平板电脑版本:i.stack.imgur.com/KQFOV.png

我想要这个平板电脑版本:i.stack.imgur.com/KHaPP.png

我想要分辨率的字体大小比例

int heightPixels, width, height;

float scaleFactor, heightDp, DiffheightDp;

WindowManager windowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

    width = windowManager.getDefaultDisplay().getWidth();
    height = windowManager.getDefaultDisplay().getHeight();
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    heightPixels = metrics.heightPixels;
    scaleFactor = metrics.density;
    heightDp = heightPixels / scaleFactor;

if(height > width ){
    DiffheightDp = 592.0;
}else{
    DiffheightDp  = 360.0
}

textView.setTextSize((float) ((15.0 / DiffheightDp) * heightDp));

//15.0 is size you want.

建议对文本使用 sp 单位,因为在 ICS 及更高版本中(也可能是 Honeycomb,如果我错了请纠正我),用户的字体大小有偏好。因此,如果您使用的是 Gingerbread 或更低版本,您将无法找到此设置。

首选项位于“设置”、“显示”、“字体大小”下。在“设置”、“辅助功能”、“大文本”下也有一个选项。

简而言之 shell:始终以 sp 而不是 dp 给出文本大小

您可能应该详细了解 android 尺码单位及其差异。

  • dp 是与密度无关的像素。使用它而不是普通像素是因为 android 设备具有不同的屏幕密度或点距。例如对于 50px x 50px 的正方形,当屏幕密度高时,它会显得更小。那么如何预防呢?使用DP!它确保无论屏幕密度如何,事物始终以相同的实际尺寸显示。
  • sp 是比例相关像素。当您处理文本时,这通常是首选。当屏幕变大时,您希望文本变大,对吗?那就用sp吧!它确保文本大小在屏幕尺寸变大时变大。

对于 tl;dr,只需对文本使用 SP!