下面列出了android.text.BoringLayout#Metrics ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public ContactChipDrawable(int paddingLeft, int paddingRight, Typeface typeface, int textColor, int textSize, int backgroundColor) {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(textColor);
mPaint.setTypeface(typeface);
mPaint.setTextSize(textSize);
mTextPaint = new TextPaint(mPaint);
mMetrics = new BoringLayout.Metrics();
Paint.FontMetricsInt temp = mTextPaint.getFontMetricsInt();
mMetrics.ascent = temp.ascent;
mMetrics.bottom = temp.bottom;
mMetrics.descent = temp.descent;
mMetrics.top = temp.top;
mMetrics.leading = temp.leading;
mRect = new RectF();
mMatrix = new Matrix();
mPaddingLeft = paddingLeft;
mPaddingRight = paddingRight;
mBackgroundColor = backgroundColor;
}
public ContactChipDrawable(int paddingLeft, int paddingRight, Typeface typeface, int textColor, int textSize, int backgroundColor) {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(textColor);
mPaint.setTypeface(typeface);
mPaint.setTextSize(textSize);
mTextPaint = new TextPaint(mPaint);
mMetrics = new BoringLayout.Metrics();
Paint.FontMetricsInt temp = mTextPaint.getFontMetricsInt();
mMetrics.ascent = temp.ascent;
mMetrics.bottom = temp.bottom;
mMetrics.descent = temp.descent;
mMetrics.top = temp.top;
mMetrics.leading = temp.leading;
mRect = new RectF();
mMatrix = new Matrix();
mPaddingLeft = paddingLeft;
mPaddingRight = paddingRight;
mBackgroundColor = backgroundColor;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mLayout == null && !TextUtils.isEmpty(mText)) {
BoringLayout.Metrics fm = new BoringLayout.Metrics();
fm.width = (int) Layout.getDesiredWidth(mText, mTextPaint);
mLayout = BoringLayout.make(mText, mTextPaint, MeasureSpec.getSize(widthMeasureSpec),
TextViewAttrsHelper.getLayoutAlignment(this, getGravity()), mAttrsHelper.mSpacingMultiplier, mAttrsHelper.mSpacingAdd, fm, true);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public ContactChipSpan(CharSequence name, int height, int maxWidth, int paddingLeft, int paddingRight, Typeface typeface, int textColor, int textSize, int backgroundColor) {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(textColor);
mPaint.setTypeface(typeface);
mPaint.setTextSize(textSize);
mTextPaint = new TextPaint(mPaint);
mRect = new RectF();
mMatrix = new Matrix();
mContactName = name;
mPaddingLeft = paddingLeft;
mPaddingRight = paddingRight;
mBackgroundColor = backgroundColor;
mHeight = height;
mWidth = Math.round(Math.min(maxWidth, mPaint.measureText(name, 0, name.length()) + paddingLeft + paddingRight + height));
int outerWidth = Math.max(0, mWidth - mPaddingLeft - mPaddingRight - mHeight);
Paint.FontMetricsInt temp = mTextPaint.getFontMetricsInt();
BoringLayout.Metrics mMetrics = new BoringLayout.Metrics();
mMetrics.width = Math.round(mTextPaint.measureText(mContactName, 0, mContactName.length()) + 0.5f);
mMetrics.ascent = temp.ascent;
mMetrics.bottom = temp.bottom;
mMetrics.descent = temp.descent;
mMetrics.top = temp.top;
mMetrics.leading = temp.leading;
mBoringLayout = BoringLayout.make(mContactName, mTextPaint, outerWidth, Layout.Alignment.ALIGN_NORMAL, 1f, 1f, mMetrics, true, TextUtils.TruncateAt.END, outerWidth);
}
private static BoringLayout.Metrics toBoringFontMetrics(FontMetricsInt metrics,
@Nullable BoringLayout.Metrics fontMetrics) {
if (fontMetrics == null) {
fontMetrics = new BoringLayout.Metrics();
}
fontMetrics.ascent = metrics.ascent;
fontMetrics.bottom = metrics.bottom;
fontMetrics.descent = metrics.descent;
fontMetrics.leading = metrics.leading;
fontMetrics.top = metrics.top;
return fontMetrics;
}
public ContactChipSpan(CharSequence name, int height, int maxWidth, int paddingLeft, int paddingRight, Typeface typeface, int textColor, int textSize, int backgroundColor) {
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(textColor);
mPaint.setTypeface(typeface);
mPaint.setTextSize(textSize);
mTextPaint = new TextPaint(mPaint);
mRect = new RectF();
mMatrix = new Matrix();
mContactName = name;
mPaddingLeft = paddingLeft;
mPaddingRight = paddingRight;
mBackgroundColor = backgroundColor;
mHeight = height;
mWidth = Math.round(Math.min(maxWidth, mPaint.measureText(name, 0, name.length()) + paddingLeft + paddingRight + height));
int outerWidth = Math.max(0, mWidth - mPaddingLeft - mPaddingRight - mHeight);
Paint.FontMetricsInt temp = mTextPaint.getFontMetricsInt();
BoringLayout.Metrics mMetrics = new BoringLayout.Metrics();
mMetrics.width = Math.round(mTextPaint.measureText(mContactName, 0, mContactName.length()) + 0.5f);
mMetrics.ascent = temp.ascent;
mMetrics.bottom = temp.bottom;
mMetrics.descent = temp.descent;
mMetrics.top = temp.top;
mMetrics.leading = temp.leading;
mBoringLayout = BoringLayout.make(mContactName, mTextPaint, outerWidth, Layout.Alignment.ALIGN_NORMAL, 1f, 1f, mMetrics, true, TextUtils.TruncateAt.END, outerWidth);
}