本文整理了Java中android.text.Layout
类的一些代码示例,展示了Layout
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Layout
类的具体详情如下:
包路径:android.text.Layout
类名称:Layout
暂无
代码示例来源:origin: nickbutcher/plaid
@Nullable Layout startLayoutMaxLines, @NonNull ReflowData endData,
@NonNull Layout endLayout, @Nullable Layout endLayoutMaxLines) {
int textLength = endLayout.getText().length();
int currentStartLine = 0;
int currentStartRunLeft = 0;
int currentEndRunLeft = 0;
int currentEndRunTop = 0;
List<Run> runs = new ArrayList<>(endLayout.getLineCount());
boolean startMaxEllipsis = false;
if (startLayoutMaxLines != null) {
char letter = startLayoutMaxLines.getText().charAt(i);
startMaxEllipsis = letter == '…';
if (letter != '\uFEFF' // beyond max lines
startLine = startLayoutMaxLines.getLineForOffset(i);
startMax = true;
startLine = startLayout.getLineForOffset(i);
boolean endMaxEllipsis = false;
if (endLayoutMaxLines != null) {
char letter = endLayoutMaxLines.getText().charAt(i);
endMaxEllipsis = letter == '…';
if (letter != '\uFEFF' // beyond max lines
endLine = endLayoutMaxLines.getLineForOffset(i);
endMax = true;
代码示例来源:origin: nickbutcher/plaid
private TouchableUrlSpan getPressedSpan(TextView textView, Spannable spannable, MotionEvent
event) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= textView.getTotalPaddingLeft();
y -= textView.getTotalPaddingTop();
x += textView.getScrollX();
y += textView.getScrollY();
Layout layout = textView.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
TouchableUrlSpan[] link = spannable.getSpans(off, off, TouchableUrlSpan.class);
TouchableUrlSpan touchedSpan = null;
if (link.length > 0) {
touchedSpan = link[0];
}
return touchedSpan;
}
代码示例来源:origin: nickbutcher/plaid
private Bitmap createBitmap(@NonNull ReflowData data, @NonNull Layout layout) {
Bitmap bitmap = Bitmap.createBitmap(
data.bounds.width(), data.bounds.height(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.translate(data.textPosition.x, data.textPosition.y);
layout.draw(canvas);
return bitmap;
}
代码示例来源:origin: stackoverflow.com
Layout l = textview.getLayout();
if (l != null) {
int lines = l.getLineCount();
if (lines > 0)
if (l.getEllipsisCount(lines-1) > 0)
Log.d(TAG, "Text is ellipsized");
}
代码示例来源:origin: stackoverflow.com
Layout layout = this.getLayout();
if (layout != null)
{
int line = layout.getLineForVertical(y);
int offset = layout.getOffsetForHorizontal(line, x);
// At this point, "offset" should be what you want - the character index
}
代码示例来源:origin: stackoverflow.com
int pos = editText.getSelectionStart();
Layout layout = editText.getLayout();
int line = layout.getLineForOffset(pos);
int baseline = layout.getLineBaseline(line);
int ascent = layout.getLineAscent(line);
float x = layout.getPrimaryHorizontal(pos);
float y = baseline + ascent;
代码示例来源:origin: wangdan/AisenWeiBo
@Override
public boolean onTouch(View v, MotionEvent event) {
Layout layout = ((TextView) v).getLayout();
int x = (int) event.getX();
int y = (int) event.getY();
int line = layout.getLineForVertical(y);
int offset = layout.getOffsetForHorizontal(line, x);
SpannableString value = SpannableString.valueOf(tv.getText());
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
MyURLSpan[] urlSpans = value.getSpans(0, value.length(), MyURLSpan.class);
float lineWidth = layout.getLineWidth(line);
webURLEmotionSpan.setClickDown(true);
value.setSpan(webURLEmotionSpan, start, end, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
tv.setText(value);
lineWidth = layout.getLineWidth(line);
代码示例来源:origin: stackoverflow.com
manip.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
Layout layout = ((TextView) v).getLayout();
int x = (int)event.getX();
int y = (int)event.getY();
if (layout!=null){
int line = layout.getLineForVertical(y);
int offset = layout.getOffsetForHorizontal(line, x);
Log.v("index", ""+offset);
}
return true;
}
});
代码示例来源:origin: stackoverflow.com
ClickableSpan[] link = buffer.getSpans(index, index, ClickableSpan.class);
if (link.length != 0) {
if (action == MotionEvent.ACTION_UP) {
Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]));
x -= textView.getTotalPaddingLeft();
y -= textView.getTotalPaddingTop();
x += textView.getScrollX();
y += textView.getScrollY();
Layout layout = textView.getLayout();
int line = layout.getLineForVertical(y);
synchronized (sLineBounds) {
layout.getLineBounds(line, sLineBounds);
if (! sLineBounds.contains(x, y)) {
return -1;
Spanned text = (Spanned) textView.getText();
int lineStart = layout.getLineStart(line);
int lineEnd = layout.getLineEnd(line);
int lineLength = lineEnd - lineStart;
if (lineLength == 0) {
代码示例来源:origin: seven332/EhViewer
private boolean action(int what, TextView widget, Spannable buffer) {
Layout layout = widget.getLayout();
int padding = widget.getTotalPaddingTop() +
widget.getTotalPaddingBottom();
int areatop = widget.getScrollY();
int areabot = areatop + widget.getHeight() - padding;
int linetop = layout.getLineForVertical(areatop);
int linebot = layout.getLineForVertical(areabot);
int first = layout.getLineStart(linetop);
int last = layout.getLineEnd(linebot);
ClickableSpan[] candidates = buffer.getSpans(first, last, ClickableSpan.class);
if (buffer.getSpanStart(FROM_BELOW) >= 0) {
selStart = selEnd = buffer.length();
代码示例来源:origin: stackoverflow.com
int y = (int) event.getY();
x -= widget.getTotalPaddingLeft();
y -= widget.getTotalPaddingTop();
x += widget.getScrollX();
y += widget.getScrollY();
Layout layout = widget.getLayout();
int line = layout.getLineForVertical(y);
int off = layout.getOffsetForHorizontal(line, x);
ClickableSpan[] link = buffer.getSpans(
off, off, ClickableSpan.class);
} else if (action == MotionEvent.ACTION_DOWN) {
Selection.setSelection(buffer,
buffer.getSpanStart(link[0]),
buffer.getSpanEnd(link[0]));
代码示例来源:origin: baidu/speech-samples
private void scrollLog(String message) {
Spannable colorMessage = new SpannableString(message + "\n");
colorMessage.setSpan(new ForegroundColorSpan(0xff0000ff), 0, message.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mShowText.append(colorMessage);
Layout layout = mShowText.getLayout();
if (layout != null) {
int scrollAmount = layout.getLineTop(mShowText.getLineCount()) - mShowText.getHeight();
if (scrollAmount > 0) {
mShowText.scrollTo(0, scrollAmount + mShowText.getCompoundPaddingBottom());
} else {
mShowText.scrollTo(0, 0);
}
}
}
代码示例来源:origin: MCMrARM/revolution-irc
public static CharSequence apply(TextView textView, CharSequence text) {
if (text == null || !(text instanceof Spannable))
return text;
Spannable s = (Spannable) text;
for (AlignToPointSpan span : s.getSpans(0, text.length(),
AlignToPointSpan.class)) {
span.mMargin = (int) Layout.getDesiredWidth(text, 0, s.getSpanStart(span.mAnchor),
textView.getPaint());
}
return text;
}
代码示例来源:origin: Manabu-GT/ExpandableTextView
private static int getRealTextViewHeight(@NonNull TextView textView) {
int textHeight = textView.getLayout().getLineTop(textView.getLineCount());
int padding = textView.getCompoundPaddingTop() + textView.getCompoundPaddingBottom();
return textHeight + padding;
}
代码示例来源:origin: facebook/litho
private int getTextOffsetAt(int x, int y) {
final int line = mLayout.getLineForVertical(y);
float start = getHorizontal(mLayout.getLineStart(line), line);
final int endOffset = mLayout.getLineVisibleEnd(line) - 1;
end = mLayout.getPrimaryHorizontal(0);
} else {
final float[] endWidth = new float[1];
mLayout.getPaint().getTextWidths(mText, endOffset, endOffset + 1, endWidth);
end =
getHorizontal(endOffset, line) + (mLayout.isRtlCharAt(endOffset) ? -1 : 1) * endWidth[0];
return mLayout.getOffsetForHorizontal(line, x);
} catch (ArrayIndexOutOfBoundsException e) {
代码示例来源:origin: hanks-zyh/HTextView
@Override
protected void drawFrame(Canvas canvas) {
Layout layout = mHTextView.getLayout();
int gapIndex = 0;
for (int i = 0; i < layout.getLineCount(); i++) {
int lineStart = layout.getLineStart(i);
int lineEnd = layout.getLineEnd(i);
float lineLeft = layout.getLineLeft(i);
float lineBaseline = layout.getLineBaseline(i);
String lineText = mText.subSequence(lineStart, lineEnd).toString();
for (int c = 0; c < lineText.length(); c++) {
int alpha = alphaList.get(gapIndex);
mPaint.setAlpha((int) ((255 - alpha) * progress + alpha));
canvas.drawText(String.valueOf(lineText.charAt(c)), lineLeft, lineBaseline, mPaint);
lineLeft += gapList.get(gapIndex++);
}
}
}
}
代码示例来源:origin: weexteam/weex-hackernews
layout = previousLayout;
if (mNumberOfLines != UNSET && mNumberOfLines > 0 && mNumberOfLines < layout.getLineCount()) {
int lastLineStart, lastLineEnd;
lastLineStart = layout.getLineStart(mNumberOfLines - 1);
lastLineEnd = layout.getLineEnd(mNumberOfLines - 1);
if (lastLineStart < lastLineEnd) {
String text = mText.subSequence(0, lastLineStart).toString() +
truncate(mText.substring(lastLineStart, lastLineEnd),
mTextPaint, layout.getWidth(), textOverflow);
spanned = createSpanned(text);
return new StaticLayout(spanned, mTextPaint, (int) Math.ceil(textWidth),
代码示例来源:origin: MCMrARM/revolution-irc
private void showHandle(TextSelectionHandlePopup handle, long id, int offset) {
TextView textView = findTextViewByItemId(id);
if (textView != null) {
int line = textView.getLayout().getLineForOffset(offset);
int y = textView.getLayout().getLineBottom(line);
float x = textView.getLayout().getPrimaryHorizontal(offset);
handle.show(textView, (int) x, y);
} else {
handle.hide();
}
}
代码示例来源:origin: facebook/TextLayoutBuilder
((Spannable) mParams.text).getSpans(0, mParams.text.length() - 1, ClickableSpan.class);
hasClickableSpans = spans.length > 0;
switch (mParams.measureMode) {
case MEASURE_MODE_UNSPECIFIED:
width = (int) Math.ceil(Layout.getDesiredWidth(mParams.text, mParams.paint));
break;
case MEASURE_MODE_EXACTLY:
width =
Math.min(
(int) Math.ceil(Layout.getDesiredWidth(mParams.text, mParams.paint)),
mParams.width);
break;
代码示例来源:origin: ZhangQinhao/MONKOVEL
@Override
public void subscribe(ObservableEmitter<List<String>> e) throws Exception {
TextPaint mPaint = (TextPaint) mView.getPaint();
mPaint.setSubpixelText(true);
Layout tempLayout = new StaticLayout(paragraphstr, mPaint, mView.getContentWidth(), Layout.Alignment.ALIGN_NORMAL, 0, 0, false);
List<String> linesdata = new ArrayList<String>();
for (int i = 0; i < tempLayout.getLineCount(); i++) {
linesdata.add(paragraphstr.substring(tempLayout.getLineStart(i), tempLayout.getLineEnd(i)));
}
e.onNext(linesdata);
e.onComplete();
}
});
内容来源于网络,如有侵权,请联系作者删除!