我有一个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?
Chip
是一个 compoundButton
我应该减去 Chip#getCompoundPaddingRight/Left
而不是 getPaddingRight/Left
.