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

问题描述 投票:0回答:1

我有一个ViewGroup,其中Chip是一个没有水平兄弟姐妹的子节点。

我试着在选择在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);

这一切都很好,但是当我把操作系统的显示大小和字体大小改为最大时--我看到所选的文本不适合在芯片内。

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

芯片的宽度onDraw == 550pxl选择的文字需要442pxl。

paint.measureText(chipText) <= textMaxWidth

有什么想法,当字体大小和显示大小大于默认值时,异常的额外padding?

android textview font-size android-fonts android-chips
1个回答
2
投票

Chip 是一个 compoundButton我应该减去 Chip#getCompoundPaddingRight/Left 而不是 getPaddingRight/Left.

© www.soinside.com 2019 - 2024. All rights reserved.