Monospace字体:根据设备大小增加文本大小

时间:2015-09-30 15:45:46

标签: android xamarin font-size monospace

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

人像电话 portrait phone

风景手机 landscape phone

现在,在我的平板电脑上,它看起来与众不同

人像平板电脑 portrait tablet

Landscape Tablet landscape tablet

0 个答案:

没有答案