0

我有一个应用程序必须显示斑马打印机的打印屏幕预览。打印数据为纯文本,一行最多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手机上的屏幕截图

人像电话 人像电话

风景电话 横向电话

现在,在我的平板电脑上,它看起来不一样了

人像平板电脑 肖像平板电脑

景观平板电脑 风景平板电脑

4

0 回答 0