本文整理了Java中android.text.Layout.getPrimaryHorizontal()
方法的一些代码示例,展示了Layout.getPrimaryHorizontal()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Layout.getPrimaryHorizontal()
方法的具体详情如下:
包路径:android.text.Layout
类名称:Layout
方法名:getPrimaryHorizontal
暂无
代码示例来源:origin: nickbutcher/plaid
/**
* Calculate the right boundary for this run (harder than it sounds). As we're a letter ahead,
* need to grab either current letter start or the end of the previous line. Also need to
* consider maxLines case, which inserts ellipses at the overflow point – don't include these.
*/
private int getRunRight(
Layout unrestrictedLayout, Layout maxLinesLayout, int currentLine, int index,
int line, boolean withinMax, boolean isMaxEllipsis, boolean isLastChar) {
int runRight;
if (line != currentLine || isLastChar) {
if (isMaxEllipsis) {
runRight = (int) maxLinesLayout.getPrimaryHorizontal(index);
} else {
runRight = (int) unrestrictedLayout.getLineMax(currentLine);
}
} else {
if (withinMax) {
runRight = (int) maxLinesLayout.getPrimaryHorizontal(index);
} else {
runRight = (int) unrestrictedLayout.getPrimaryHorizontal(index);
}
}
return runRight;
}
代码示例来源:origin: facebook/litho
/**
* {@link Layout#getPrimaryHorizontal} uses the paragraph direction, which is incorrect for
* characters that oppose the direction of the paragraph.
*/
private float getHorizontal(int offset, int line) {
final boolean isRtlLine = mLayout.getParagraphDirection(line) == Layout.DIR_RIGHT_TO_LEFT;
return isRtlLine == mLayout.isRtlCharAt(offset)
? mLayout.getPrimaryHorizontal(offset)
: mLayout.getSecondaryHorizontal(offset);
}
代码示例来源: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: nickbutcher/plaid
currentStartLine = startLine;
currentStartRunLeft = (int) (startMax ? startLayoutMaxLines
.getPrimaryHorizontal(i) : startLayout.getPrimaryHorizontal(i));
currentStartRunTop = startLayout.getLineTop(startLine);
currentEndLine = endLine;
currentEndRunLeft = (int) (endMax ? endLayoutMaxLines
.getPrimaryHorizontal(i) : endLayout.getPrimaryHorizontal(i));
currentEndRunTop = endLayout.getLineTop(endLine);
代码示例来源:origin: stackoverflow.com
double startXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal((int)startOffsetOfClickedText);
double endXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal((int)endOffsetOfClickedText);
代码示例来源:origin: facebook/litho
end = mLayout.getPrimaryHorizontal(0);
} else {
final float[] endWidth = new float[1];
代码示例来源:origin: FolioReader/FolioReader-Android
@Override
protected void onDraw(Canvas canvas) {
int count = getLineCount();
final Layout layout = getLayout();
float xStart, xStop, xDiff;
int firstCharInLine, lastCharInLine;
for (int i = 0; i < count; i++) {
int baseline = getLineBounds(i, mRect);
firstCharInLine = layout.getLineStart(i);
lastCharInLine = layout.getLineEnd(i);
xStart = layout.getPrimaryHorizontal(firstCharInLine);
xDiff = layout.getPrimaryHorizontal(firstCharInLine + 1) - xStart;
xStop = layout.getPrimaryHorizontal(lastCharInLine - 1) + xDiff;
canvas.drawLine(xStart,
baseline + mStrokeWidth,
xStop,
baseline + mStrokeWidth,
mPaint);
}
super.onDraw(canvas);
}
}
代码示例来源:origin: stackoverflow.com
if (startLine <= lnum && lnum <= endLine) {
if (startLine == lnum) {
left = (int) layout.getPrimaryHorizontal(this.start);
right = (int) layout.getPrimaryHorizontal(this.end);
代码示例来源:origin: stackoverflow.com
float endXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal(endOffsetOfClickedText);
代码示例来源:origin: stackoverflow.com
Layout layout = etShell.getLayout();
int pos = etShell.length();
int line = layout.getLineForOffset(pos);
int baseline = layout.getLineBaseline(line);
int ascent = layout.getLineAscent(line);
float x = layout.getPrimaryHorizontal(pos);
float y = baseline + ascent;
etInput.setMaxWidth(width - (int) x);
etInput.setX(x);
etInput.setY(y);
代码示例来源:origin: stackoverflow.com
if(getText().toString().substring(start,end).indexOf("\t")>=0
|| getText().toString().substring(start,end).indexOf("\n")>=0
|| getText().toString().substring(start,end).indexOf("\r")>=0) {
TextPaint paint = new TextPaint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(mBackgroundColor);
paint.bgColor = mBackgroundColor;
Layout layout = getLayout();
int line = layout.getLineForOffset(start);
int baseline = layout.getLineBaseline(line);
int ascent = layout.getLineAscent(line);
float x = layout.getPrimaryHorizontal(start);
float y = baseline + ascent;
Rect rect = new Rect();
//rect.set(start, 0, Math.round(layout.getSecondaryHorizontal(end)), getLineHeight()+5);
rect.set(start, 0, Math.round(layout.getSecondaryHorizontal(end)), getLineHeight()+5);
rect.offset(Math.round(x), Math.round(y));
Log.d("debug","tabs " + rect.toString());
canvas.drawRect(rect, paint);
}
代码示例来源:origin: stackoverflow.com
public void setCursorLocation(int characterOffset) {
Layout layout = this.getLayout();
int line = layout.getLineForOffset(characterOffset);
mCursorX = layout.getPrimaryHorizontal(characterOffset);
mCursorBaseY = layout.getLineBaseline(line);
mCursorBottomY = layout.getLineBottom(line);
mCursorAscentY = layout.getLineAscent(line);
this.invalidate();
}
代码示例来源:origin: stackoverflow.com
public boolean moveDown(Layout layout) {
int start = myTextbox.getSelectionStart();
int end = myTextbox.getSelectionEnd();
if (start != end) {
int min = Math.min(start, end);
int max = Math.max(start, end);
myTextbox.setSelection(max);
if (min == 0 && max == myTextbox.length()) {
return false;
}
return true;
} else {
int line = layout.getLineForOffset(end);
if (line < layout.getLineCount() - 1) {
int move;
if (layout.getParagraphDirection(line) ==
layout.getParagraphDirection(line + 1)) {
float h = layout.getPrimaryHorizontal(end);
move = layout.getOffsetForHorizontal(line + 1, h);
} else {
move = layout.getLineStart(line + 1);
}
myTextbox.setSelection(move);
return true;
}
}
return false;
}
代码示例来源:origin: derry/delion
@Override
public void set(TextView view, Integer scrollX) {
if (mRtlStateInvalid) return;
boolean rtl = ApiCompatibilityUtils.isLayoutRtl(containerView);
if (rtl != isContainerRtl) {
mRtlStateInvalid = true;
if (!rtl || mUrlBar.getLayout() != null) {
scrollX = 0;
if (rtl) {
scrollX = (int) view.getLayout().getPrimaryHorizontal(0);
scrollX -= view.getWidth();
}
}
}
view.setScrollX(scrollX);
}
};
代码示例来源:origin: Calsign/APDE
public void scrollToChar(int pos, EditorActivity editor) {
float xOffset = getCompoundPaddingLeft();
//Calculate coordinates
int x = (int) Math.max(xOffset + getLayout().getPrimaryHorizontal(pos), 1);
int y = getLineHeight() * getLayout().getLineForOffset(pos);
((HorizontalScrollView) editor.findViewById(R.id.code_scroller_x)).smoothScrollTo(x, 0);
((ScrollView) editor.findViewById(R.id.code_scroller)).smoothScrollTo(0, y);
}
代码示例来源:origin: TMLAndroid/FillBlankDemo
public RectF drawSpanRect(ReplaceSpan s) {
Layout layout = mTv.getLayout();
Spannable buffer = (Spannable) mTv.getText();
int l = buffer.getSpanStart(s);
int r = buffer.getSpanEnd(s);
int line = layout.getLineForOffset(l);
int l2 = layout.getLineForOffset(r);
if (mRf == null){
mRf = new RectF();
//Rect rt = new Rect();
Paint.FontMetrics fontMetrics = mTv.getPaint().getFontMetrics();
//mTv.getPaint().getTextBounds("TgQyYFJ",0,7,rt);
mFontT = (int) fontMetrics.ascent;
mFontB = (int) fontMetrics.descent;
}
mRf.left = layout.getPrimaryHorizontal(l);
mRf.right = layout.getSecondaryHorizontal(r);
// 通过基线去校准
line = layout.getLineBaseline(line);
mRf.top = line + mFontT;
mRf.bottom = line + mFontB;
return mRf;
}
代码示例来源: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: geniusgithub/AndroidDialer
protected boolean up(TextView widget, Spannable buffer) {
if (DBG) {
Log.d(LOG_TAG, "--- up:");
}
Layout layout = widget.getLayout();
int end = getEndPos(widget);
int line = layout.getLineForOffset(end);
if (line > 0) {
int to;
if (layout.getParagraphDirection(line) == layout
.getParagraphDirection(line - 1)) {
float h = layout.getPrimaryHorizontal(end);
to = layout.getOffsetForHorizontal(line - 1, h);
} else {
to = layout.getLineStart(line - 1);
}
mManager.setEndPos(to);
mManager.onCursorMoved();
}
return true;
}
代码示例来源:origin: geniusgithub/AndroidDialer
protected boolean down(TextView widget, Spannable buffer) {
if (DBG) {
Log.d(LOG_TAG, "--- down:");
}
Layout layout = widget.getLayout();
int end = getEndPos(widget);
int line = layout.getLineForOffset(end);
if (line < layout.getLineCount() - 1) {
int to;
if (layout.getParagraphDirection(line) == layout
.getParagraphDirection(line + 1)) {
float h = layout.getPrimaryHorizontal(end);
to = layout.getOffsetForHorizontal(line + 1, h);
} else {
to = layout.getLineStart(line + 1);
}
mManager.setEndPos(to);
mManager.onCursorMoved();
}
return true;
}
代码示例来源:origin: Light-Team/ModPE-IDE-Source
protected void onPopupChangePosition() {
try {
Layout layout = getLayout();
if (layout != null) {
int pos = getSelectionStart();
int line = layout.getLineForOffset(pos);
int baseline = layout.getLineBaseline(line);
int ascent = layout.getLineAscent(line);
float x = layout.getPrimaryHorizontal(pos);
float y = baseline + ascent;
int offsetHorizontal = (int) x + mGutterWidth;
setDropDownHorizontalOffset(offsetHorizontal);
int heightVisible = getHeightVisible();
int offsetVertical = (int) ((y + mCharHeight) - getScrollY());
int tmp = offsetVertical + getDropDownHeight() + mCharHeight;
if (tmp < heightVisible) {
tmp = offsetVertical + mCharHeight / 2;
setDropDownVerticalOffset(tmp);
} else {
tmp = offsetVertical - getDropDownHeight() - mCharHeight;
setDropDownVerticalOffset(tmp);
}
}
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
}
内容来源于网络,如有侵权,请联系作者删除!