显示和字体较大时手动计算可用宽度不正确

Posted

技术标签:

【中文标题】显示和字体较大时手动计算可用宽度不正确【英文标题】:Manually calculating available width is incorrect when display and font sizes are large 【发布时间】:2020-09-08 00:55:02 【问题描述】:

我小时候有一个带有 Chip 的 ViewGroup,没有水平兄弟。

在选择要在芯片内设置的文本之前,我尝试计算可用宽度。

final View parent = (View) getParent();
final int parentPaddingLeft = parent.getPaddingLeft();
final int parentPaddingRight = parent.getPaddingRight();
final int paddingLeft = getPaddingLeft();
final int paddingRight = getPaddingRight();
final int leftMargin = layoutParams.leftMargin;
final int rightMargin = layoutParams.rightMargin;
final int textViewSafetyPadding = 20;
final int currentTextMaxWidth =
    parentWidth
        - (textViewSafetyPadding
            + parentPaddingLeft
            + parentPaddingRight
            + paddingLeft
            + paddingRight
            + leftMargin
            + rightMargin);

一切正常,但是当我将操作系统显示大小和字体大小更改为最大时 - 我看到所选文本不适合芯片。

即使油漆测量和芯片实际宽度表明它应该适合。

芯片的宽度 onDraw == 550pxl 所选文本需要 442pxl

paint.measureText(chipText) <= textMaxWidth

当字体大小和显示大小大于默认值时,是否有异常的额外填充?

【问题讨论】:

【参考方案1】:

ChipcompoundButton,我应该减去Chip#getCompoundPaddingRight/Left 而不是getPaddingRight/Left

【讨论】:

以上是关于显示和字体较大时手动计算可用宽度不正确的主要内容,如果未能解决你的问题,请参考以下文章

快速在uiimage中以正确的方式显示较小或较大的高度,宽度图像

如何在客户端计算机上显示特定字体

使用 PHP GD 计算文本宽度

设置 JTable 列的原型值(用于自动宽度计算)

C语言,dev cpp,编写的计算阶乘程序,数值较大时输出不正确,求助.

根据字符长度怎样计算出需要显示的label宽度高度