我有一个必须显示斑马打印机的打印屏幕预览的应用程序。 要打印的数据是纯文本,一行最多包含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手机上的屏幕截图
现在,在我的平板电脑上,它看起来与众不同