我一直在努力解决这个问题:
我正在使用画布在屏幕上绘制文字,用于我的Android应用。现在,我正在使用它来缩放文本大小:
float scaledTextSize = textSize * getResources().getDisplayMetrics().density;
paint.setTextSize(scaledTextSize);
它确实缩放了一点,但与当前屏幕尺寸相比,它没有完全保持其“尺寸比”。我也尝试过使用资源文件中的维度的方法,但没有任何改变。
例如,如果我将文本大小设置为适合Nexus 5屏幕,则对于Nexus 7来说它太小了,对于Nexus 4来说有点太大。
任何帮助将不胜感激!
答案 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