[parentWidth当显示尺寸最大时返回错误的值?

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

我扩展com.google.android.material.chip.Chip

我在onMeasure中有一个要测量的文本。

我的计算表明文本可以适合芯片的空间,但实际上我看到文本被截断了。

我不希望截断,因为我在布局通过之前就进行了测量。

*我使用最大的显示大小,最大的字体大小,乌克兰字体。

我应该以某种方式更改我的测量代码吗?

  private String getLongestPossibleChipText(int textMaxWidth) {

final MarginLayoutParams layoutParams = (MarginLayoutParams) getLayoutParams();
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 currentTextMaxWidth =
    parentWidth
        - (parentPaddingLeft
            + parentPaddingRight
            + paddingLeft
            + paddingRight
            + leftMargin
            + rightMargin);


    final TextPaint paint = getPaint();
    for (String chipText : chipTexts) {
      if (paint.measureText(chipText) <= currentTextMaxWidth) {
        return chipText;
      }
    }
    return Iterables.getLast(chipTexts);
  }
android text font-size display measure
1个回答
0
投票

我认为文字长度计算不正确。从ChipDrawable的文档中可以看到Chip的一些内部结构,我认为代码无法解释。 (ChipChipDrawable的包装。)我将在此处重现该图:

enter image description here

可能是内部填充全为零,所以没关系。尽管如此,ChipDrawable中的calculateTextBounds()方法可能是一个很好的起点。

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