如何使用屏幕尺寸缩放绘制文本大小?

时间:2017-05-24 03:35:00

标签: android

我一直在努力解决这个问题:

我正在使用画布在屏幕上绘制文字,用于我的Android应用。现在,我正在使用它来缩放文本大小:

float scaledTextSize = textSize * getResources().getDisplayMetrics().density;
paint.setTextSize(scaledTextSize);

它确实缩放了一点,但与当前屏幕尺寸相比,它没有完全保持其“尺寸比”。我也尝试过使用资源文件中的维度的方法,但没有任何改变。

例如,如果我将文本大小设置为适合Nexus 5屏幕,则对于Nexus 7来说它太小了,对于Nexus 4来说有点太大。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

首先将文本大小从sp转换为像素,而不是使用dp。

与比例无关的像素用于指定字体大小,因此可以根据屏幕密度和用户偏好调整它们。

int spSize = 12;//your sp size
  // Convert the sp to pixels
float scaledTextSize = spSize * getResources().getDisplayMetrics().scaledDensity;

然后设置paint setTextSize

paint.setTextSize(scaledTextSize);

答案 1 :(得分:0)

这有效:

double relation = Math.sqrt(canvas.getWidth() * canvas.getHeight()) / 250;
paint.setTextSize((float) (textSize * relation));

从这个帖子中回答: Android: Canvas.drawText() text size on different screen resolutions