我有一个应用程序必须显示斑马打印机的打印屏幕预览。打印数据为纯文本,一行最多80个字符。
预览是纯 android:垂直线性布局的文本视图,每行一个文本视图和等宽字体。渲染工作。对于我的手机,我将字体大小设置为 7dp,并且 80 个字符在纵向模式下适合屏幕。
现在,有没有办法计算文本大小以在一行上恰好适合 80 个字符并且与设备大小无关?
我尝试了以下方法来计算文本大小和文本比例:
private void CalculateTextSizeAndScale(int numberOfChars, out float textSize, out float textScale)
{
var text = new string('M', numberOfChars);
var paint = new Paint
{
TextSize = 100f,
TextScaleX = 1f
};
paint.SetTypeface(Typeface.Monospace);
var width = paint.MeasureText(text);
textSize = _screenWidth / width * 100f;
paint.TextSize = textSize;
paint.TextScaleX = 1f;
width = paint.MeasureText(text);
textScale = _screenWidth / width;
}
对于某些屏幕分辨率,这似乎是正确的。它在纵向模式下非常适合我的 android 手机,但对于横向模式完全错误。
我使用 Display.GetMetrics 来检索屏幕宽度。
这是我的android手机上的屏幕截图
现在,在我的平板电脑上,它看起来不一样了