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

Manually calculating available width is incorrect when display and font sizes are large

我有一个带有 Chip 的 ViewGroup 作为 child,没有水平兄弟。

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

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);

一切正常,但是当我将 OS 显示大小和字体大小更改为最大时 - 我发现所选文本不适合芯片。

尽管油漆尺寸和芯片实际宽度显示它应该适合。

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

paint.measureText(chipText) <= textMaxWidth

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

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