android.text.Layout.getPrimaryHorizontal()方法的使用及代码示例

x33g5p2x  于2022-01-23 转载在 其他  
字(9.4k)|赞(0)|评价(0)|浏览(254)

本文整理了Java中android.text.Layout.getPrimaryHorizontal()方法的一些代码示例,展示了Layout.getPrimaryHorizontal()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Layout.getPrimaryHorizontal()方法的具体详情如下:
包路径:android.text.Layout
类名称:Layout
方法名:getPrimaryHorizontal

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);
  }
}

相关文章