本文整理汇总了Java中android.text.Layout.getLineBottom方法的典型用法代码示例。如果您正苦于以下问题:Java Layout.getLineBottom方法的具体用法?Java Layout.getLineBottom怎么用?Java Layout.getLineBottom使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类android.text.Layout
的用法示例。
在下文中一共展示了Layout.getLineBottom方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: findClosestLineBottom
import android.text.Layout; //导入方法依赖的package包/类
private int findClosestLineBottom( int ypos ) {
Layout layout = this.childView.getLayout();
if ( layout == null ) {
return ypos;
}
int currentLine = layout.getLineForVertical(ypos);
if ( currentLine > 0 ) {
return layout.getLineBottom(currentLine -1);
} else {
return 0;
}
}
示例2: getScreenCoordsForPos
import android.text.Layout; //导入方法依赖的package包/类
private float[] getScreenCoordsForPos(int line, int pos)
{
LayoutManager manager = getLayoutManager();
ViewHolder holder = findViewHolderForAdapterPosition(line);
if(holder == null)
{
if(getChildCount() > 0 && getChildAdapterPosition(getChildAt(getChildCount() - 1)) < line)
return new float[]{getWidth() / 2, getHeight(), 0};
return new float[]{getWidth() / 2, 0, 0};
}
View view = manager.findViewByPosition(findViewHolderForAdapterPosition(line).getLayoutPosition());
if(view == null)
return new float[]{0, 0, 0};
Layout layout = ((TextView)view).getLayout();
float x = layout.getPrimaryHorizontal(pos);
int ln = layout.getLineForOffset(pos);
float y = (float)(layout.getLineTop(ln) + layout.getLineBottom(ln)) / 2;
float screenX = x + view.getLeft() + getScrollX();
float screenY = y + view.getTop() + getScrollY();
if(screenY < 0)
screenY = 0;
if(screenY > getBottom())
screenY = getBottom();
return new float[]{screenX, screenY, layout.getLineBottom(ln) - y};
}
示例3: findClickableSpanUnderTouch
import android.text.Layout; //导入方法依赖的package包/类
private BetterLinkMovementExtended.ClickableSpanWithText findClickableSpanUnderTouch(TextView textView, Spannable text, MotionEvent event) {
int touchX = (int) event.getX();
int touchY = (int) event.getY();
touchX -= textView.getTotalPaddingLeft();
touchY -= textView.getTotalPaddingTop();
touchX += textView.getScrollX();
touchY += textView.getScrollY();
Layout layout = textView.getLayout();
int touchedLine = layout.getLineForVertical(touchY);
int touchOffset = layout.getOffsetForHorizontal(touchedLine, (float) touchX);
this.touchedLineBounds.left = layout.getLineLeft(touchedLine);
this.touchedLineBounds.top = (float) layout.getLineTop(touchedLine);
this.touchedLineBounds.right = layout.getLineWidth(touchedLine) + this.touchedLineBounds.left;
this.touchedLineBounds.bottom = (float) layout.getLineBottom(touchedLine);
if (this.touchedLineBounds.contains((float) touchX, (float) touchY)) {
Object[] spans = text.getSpans(touchOffset, touchOffset, SPAN_CLASS);
for (Object span : spans) {
if (span instanceof ClickableSpan) {
return ClickableSpanWithText.ofSpan(textView, (ClickableSpan) span);
}
}
return null;
} else {
return null;
}
}
示例4: getFullyVisibleLinesCount
import android.text.Layout; //导入方法依赖的package包/类
/**
* Get how many lines of text we can display so their full height is visible.
*/
private int getFullyVisibleLinesCount() {
Layout layout = createWorkingLayout("");
int height = getHeight() - getPaddingTop() - getPaddingBottom();
int lineHeight = layout.getLineBottom(0);
return height / lineHeight;
}
示例5: updatePosition
import android.text.Layout; //导入方法依赖的package包/类
public void updatePosition() {
if ( storedPosition == -1 && this.storedPercentage == -1d ) {
return; //Hopefully come back later
}
if ( childView.getText().length() == 0 ) {
return;
}
if ( storedPercentage != -1d ) {
this.storedPosition = (int) (this.childView.getText().length() * storedPercentage);
this.storedPercentage = -1d;
}
Layout layout = this.childView.getLayout();
if ( layout != null ) {
int pos = Math.max(0, this.storedPosition);
int line = layout.getLineForOffset(pos);
if ( line > 0 ) {
int newPos = layout.getLineBottom(line -1);
bookView.scrollTo(0, newPos);
} else {
bookView.scrollTo(0, 0);
}
}
}
示例6: getTouchedSpan
import android.text.Layout; //导入方法依赖的package包/类
/**
* Gets the span that was touched.
* @param tv {@link TextView}
* @param span {@link Spannable}
* @param e {@link MotionEvent}
* @return {@link TouchableSpan}
*/
private TouchableSpan getTouchedSpan(TextView tv, Spannable span, MotionEvent e) {
// Find the location in which the touch was made
int x = (int)e.getX();
int y = (int)e.getY();
// Ignore padding
x -= tv.getTotalPaddingLeft();
y -= tv.getTotalPaddingTop();
// Account for scrollable text
x += tv.getScrollX();
y += tv.getScrollY();
final Layout layout = tv.getLayout();
final int touchedLine = layout.getLineForVertical(y);
final int touchOffset = layout.getOffsetForHorizontal(touchedLine, x);
// Set bounds of the touched line
touchBounds.left = layout.getLineLeft(touchedLine);
touchBounds.top = layout.getLineTop(touchedLine);
touchBounds.right = layout.getLineRight(touchedLine);
touchBounds.bottom = layout.getLineBottom(touchedLine);
// Ensure the span falls within the bounds of the touch
TouchableSpan touchSpan = null;
if (touchBounds.contains(x, y)) {
// Find clickable spans that lie under the touched area
TouchableSpan[] spans = span.getSpans(touchOffset, touchOffset, TouchableSpan.class);
touchSpan = (spans.length > 0) ? spans[0] : null;
}
return touchSpan;
}
示例7: isEventOnText
import android.text.Layout; //导入方法依赖的package包/类
/**
* Check if event's coordinates are within line's text.
*
* Needed as getOffsetForHorizontal will return closest character,
* which is an issue when clicking the empty space next to the text.
*/
private boolean isEventOnText(MotionEvent event, Layout layout, int line) {
float left = layout.getLineLeft(line) + getTotalPaddingLeft();
float right = layout.getLineRight(line) + getTotalPaddingRight();
float bottom = layout.getLineBottom(line) + getTotalPaddingTop();
float top = layout.getLineTop(line) + getTotalPaddingTop();
return left <= event.getX() && event.getX() <= right &&
top <= event.getY() && event.getY() <= bottom;
}
示例8: computeMaxLineCount
import android.text.Layout; //导入方法依赖的package包/类
private int computeMaxLineCount(Layout layout) {
int availableHeight = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
for (int i = 0; i < layout.getLineCount(); i++) {
if (availableHeight < layout.getLineBottom(i)) {
return i;
}
}
return layout.getLineCount();
}