java静态方法mult_Java StaticLayout.getLineStart方法代码示例

import android.text.StaticLayout; //导入方法依赖的package包/类

/**

* Resizes this view's text size with respect to its width and height

* (minus padding).

*/

private void resizeText() {

final int availableHeightPixels = getHeight() - getCompoundPaddingBottom() - getCompoundPaddingTop();

final int availableWidthPixels = getWidth() - getCompoundPaddingLeft() - getCompoundPaddingRight();

final CharSequence text = getText();

// Safety check

// (Do not resize if the view does not have dimensions or if there is no text)

if (text == null

|| text.length() <= 0

|| availableHeightPixels <= 0

|| availableWidthPixels <= 0

|| mMaxTextSizePixels <= 0) {

return;

}

float targetTextSizePixels = mMaxTextSizePixels;

int targetTextHeightPixels = getTextHeightPixels(text, availableWidthPixels, targetTextSizePixels);

// Until we either fit within our TextView

// or we have reached our minimum text size,

// incrementally try smaller sizes

while (targetTextHeightPixels > availableHeightPixels

&& targetTextSizePixels > mMinTextSizePixels) {

targetTextSizePixels = Math.max(

targetTextSizePixels - 2,

mMinTextSizePixels);

targetTextHeightPixels = getTextHeightPixels(

text,

availableWidthPixels,

targetTextSizePixels);

}

// If we have reached our minimum text size and the text still doesn't fit,

// append an ellipsis

// (NOTE: Auto-ellipsize doesn't work hence why we have to do it here)

// depending on the value of getEllipsize())

if (getEllipsize() != null

&& targetTextSizePixels == mMinTextSizePixels

&& targetTextHeightPixels > availableHeightPixels) {

// Make a copy of the original TextPaint object for measuring

TextPaint textPaintCopy = new TextPaint(getPaint());

textPaintCopy.setTextSize(targetTextSizePixels);

// Measure using a StaticLayout instance

StaticLayout staticLayout = new StaticLayout(

text,

textPaintCopy,

availableWidthPixels,

Layout.Alignment.ALIGN_NORMAL,

mLineSpacingMultiplier,

mLineSpacingExtra,

false);

// Check that we have a least one line of rendered text

if (staticLayout.getLineCount() > 0) {

// Since the line at the specific vertical position would be cut off,

// we must trim up to the previous line and add an ellipsis

int lastLine = staticLayout.getLineForVertical(availableHeightPixels) - 1;

if (lastLine >= 0) {

int startOffset = staticLayout.getLineStart(lastLine);

int endOffset = staticLayout.getLineEnd(lastLine);

float lineWidthPixels = staticLayout.getLineWidth(lastLine);

float ellipseWidth = textPaintCopy.measureText(mEllipsis);

// Trim characters off until we have enough room to draw the ellipsis

while (availableWidthPixels < lineWidthPixels + ellipseWidth) {

endOffset--;

lineWidthPixels = textPaintCopy.measureText(

text.subSequence(startOffset, endOffset + 1).toString());

}

setText(text.subSequence(0, endOffset) + mEllipsis);

}

}

}

super.setTextSize(TypedValue.COMPLEX_UNIT_PX, targetTextSizePixels);

// Some devices try to auto adjust line spacing, so force default line spacing

super.setLineSpacing(mLineSpacingExtra, mLineSpacingMultiplier);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值