微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.text.Layout的实例源码

项目:weex-3d-map    文件WXText.java   
/**
 * Flush view no matter what height and width the {@link WXDomObject} specifies.
 * @param extra must be a {@link Layout} object,otherwise,nothing will happen.
 */
private void flushView(Object extra) {
  if (extra instanceof Layout &&
      getHostView() != null && !extra.equals(getHostView().getTextLayout())) {
    final Layout layout = (Layout) extra;
    /**The following if block change the height of the width of the textView.
     * other part of the code is the same to updateExtra
     */
    ViewGroup.LayoutParams layoutParams = getHostView().getLayoutParams();
    if (layoutParams != null) {
      layoutParams.height = layout.getHeight();
      layoutParams.width = layout.getWidth();
      getHostView().setLayoutParams(layoutParams);
    }
    getHostView().setTextLayout(layout);
    getHostView().invalidate();
  }
}
项目:chromium-for-android-56-debug-video    文件WebappUrlBar.java   
/**
 * Show the end of the URL rather than the beginning.
 */
@Override
public void onLayoutChange(View v,int left,int top,int right,int bottom,int oldLeft,int oldTop,int oldRight,int oldBottom) {
    Layout layout = mUrlBar.getLayout();
    if (layout == null) return;

    // Android doesn't account for the compound Drawable in its width calculations,leading to
    // improper scrolling and even Android improperly placing the horizontal fade in its
    // TextView calculation.  Get around it by calculating that width manually: crbug.com/303908
    int urlBarWidth = mUrlBar.getWidth();
    int iconWidth =
            mCurrentIconResource == 0 ? 0 : mIconResourceWidths.get(mCurrentIconResource);
    int availableTextWidth = urlBarWidth - iconWidth;
    int desiredWidth = (int) Layout.getDesiredWidth(layout.getText(),layout.getPaint());

    if (desiredWidth > availableTextWidth) {
        mUrlBar.scrollTo(desiredWidth - availableTextWidth,0);
    } else {
        mUrlBar.scrollTo(0,0);
    }
}
项目:GitHub    文件MaterialAutoCompleteTextView.java   
/**
 * @return True,if adjustments were made that require the view to be invalidated.
 */
private boolean adjustBottomLines() {
  // Bail out if we have a zero width; lines will be adjusted during next layout.
  if (getWidth() == 0) {
    return false;
  }
  int destBottomLines;
  textPaint.setTextSize(bottomTextSize);
  if (tempErrorText != null || helperText != null) {
    Layout.Alignment alignment = (getGravity() & Gravity.RIGHT) == Gravity.RIGHT || isRTL() ?
      Layout.Alignment.ALIGN_OPPOSITE : (getGravity() & Gravity.LEFT) == Gravity.LEFT ?
      Layout.Alignment.ALIGN_norMAL : Layout.Alignment.ALIGN_CENTER;
    textLayout = new StaticLayout(tempErrorText != null ? tempErrorText : helperText,textPaint,getWidth() - getBottomTextLeftOffset() - getBottomTextRightOffset() - getPaddingLeft() - getPaddingRight(),alignment,1.0f,0.0f,true);
    destBottomLines = Math.max(textLayout.getLineCount(),minBottomTextLines);
  } else {
    destBottomLines = minBottomLines;
  }
  if (bottomLines != destBottomLines) {
    getBottomLinesAnimator(destBottomLines).start();
  }
  bottomLines = destBottomLines;
  return true;
}
项目:snippety    文件TextIndentSpan.java   
public void drawLeadingMargin(Canvas c,Paint p,int x,int dir,int baseline,CharSequence text,int start,int end,boolean first,Layout l) {
    if (first) {
        TextPaint paint = new TextPaint(p);

        paint.setStyle(Paint.Style.FILL);

        if (options.textSize != -1) {
            paint.setTextSize(options.textSize);
        }

        if (options.textColor != -1) {
            paint.setColor(options.textColor);
        }

        if (options.typeface != null) {
            paint.setTypeface(options.typeface);
        }

        c.save();
        c.drawText(data,x + options.leadWidth,baseline,paint);
        c.restore();
    }
}
项目:mininoteview    文件TextEdit.java   
private void moveCursor(int x,int y)
{
    x -= edit.getPaddingLeft();
    y -= edit.getPaddingTop();
    Layout l = edit.getLayout();
    int offset;
    int line = l.getLineForVertical(y);
    if(line == 0 && y < l.getLinetop(line))
    {
        offset = 0;
    }
    else if(line >= l.getLineCount() - 1 && y >= l.getLinetop(line + 1))
    {
        offset = l.getText().length();
    }
    else
    {
        offset = l.getoffsetForHorizontal(line,x);
    }

    edit.setSelection(offset);

}
项目:Markwon    文件CodeSpan.java   
@Override
public void drawLeadingMargin(Canvas c,Layout layout) {

    if (multiline) {

        paint.setStyle(Paint.Style.FILL);
        paint.setColor(theme.getCodeBackgroundColor(p));

        final int left;
        final int right;
        if (dir > 0) {
            left = x;
            right = c.getWidth();
        } else {
            left = x - c.getWidth();
            right = x;
        }

        rect.set(left,top,right,bottom);

        c.drawRect(rect,paint);
    }
}
项目:empty-state-recyclerview    文件TextStatedisplay.java   
private void configureTextLayouts(final int availableWidth) {
    if (!textLayoutsConfigured) {
        final int totalNeededPadding = getPaddingLeft() + getPaddingRight();

        // Create new static layout only if needed!
        if ((titleLayout.getWidth() + totalNeededPadding) > availableWidth) {
            this.titleLayout = new StaticLayout(title,titlePaint,availableWidth,Layout.Alignment.ALIGN_norMAL,1.15f,false);
        }

        // Create new static layout only if needed!
        if ((subtitleLayout.getWidth() + totalNeededPadding) > availableWidth) {
            this.subtitleLayout = new StaticLayout(subtitle,subtitlePaint,false);
        }

        textLayoutsConfigured = true;
    }
}
项目:android-slidr    文件Slidr.java   
private void drawIndicatorsTextAbove(Canvas canvas,String text,TextPaint paintText,float x,float y,Layout.Alignment alignment) {

        final float textHeight = calculateTextMultilineHeight(text,paintText);
        y -= textHeight;

        final int width = (int) paintText.measureText(text);
        if (x >= getWidth() - settings.paddingCorners) {
            x = (getWidth() - width - settings.paddingCorners / 2f);
        } else if (x <= 0) {
            x = width / 2f;
        } else {
            x = (x - width / 2f);
        }

        if (x < 0) {
            x = 0;
        }

        if (x + width > getWidth()) {
            x = getWidth() - width;
        }

        drawText(canvas,text,x,y,paintText,alignment);
    }
项目:SelectableTextProvider    文件TextLayoutUtil.java   
public static int getPreciSEOffset(TextView textView,int y) {
    Layout layout = textView.getLayout();
    if (layout != null) {
        int topVisibleLine = layout.getLineForVertical(y);
        int offset = layout.getoffsetForHorizontal(topVisibleLine,x);

        int offsetX = (int) layout.getPrimaryHorizontal(offset);

        if (offsetX > x) {
            return layout.getoffsetToLeftOf(offset);
        } else {
            return offset;
        }
    } else {
        return -1;
    }
}
项目:HtmlCompat    文件HtmlCompat.java   
private static String getTextDirection(Spanned text,int end) {
        // FIXME not supported
        int paraDir = Layout.DIR_LEFT_TO_RIGHT;
//        final int len = end - start;
//        final byte[] levels = ArrayUtils.newUnpaddedByteArray(len);
//        final char[] buffer = TextUtils.obtain(len);
//        TextUtils.getChars(text,start,end,buffer,0);
//        int paraDir = AndroidBidi.bidi(Layout.DIR_REQUEST_DEFAULT_LTR,levels,len,//                false /* no info */);
        switch (paraDir) {
            case Layout.DIR_RIGHT_TO_LEFT:
                return " dir=\"rtl\"";
            case Layout.DIR_LEFT_TO_RIGHT:
            default:
                return " dir=\"ltr\"";
        }
    }
项目:Sega    文件AutoResizeTextView.java   
/**
 * Sets the text size of a clone of the view's {@link TextPaint} object
 * and uses a {@link StaticLayout} instance to measure the height of the text.
 *
 * @param source
 * @param availableWidthPixels
 * @param textSizePixels
 * @return the height of the text when placed in a view
 * with the specified width
 * and when the text has the specified size.
 */
private int getTextHeightPixels(
        CharSequence source,int availableWidthPixels,float textSizePixels) {
    // Make a copy of the original TextPaint object
    // since the object gets modified while measuring
    // (see also the docs for TextView.getPaint()
    // which states to access it read-only)
    TextPaint textPaintcopy = new TextPaint(getPaint());
    textPaintcopy.setTextSize(textSizePixels);
    // Measure using a StaticLayout instance
    StaticLayout staticLayout = new StaticLayout(
            source,textPaintcopy,availableWidthPixels,mLinespacingMultiplier,mLinespacingExtra,true);
    return staticLayout.getHeight();
}
项目:boohee_v5.6    文件Toolbar.java   
public boolean isTitleTruncated() {
    if (this.mTitleTextView == null) {
        return false;
    }
    Layout titleLayout = this.mTitleTextView.getLayout();
    if (titleLayout == null) {
        return false;
    }
    int lineCount = titleLayout.getLineCount();
    for (int i = 0; i < lineCount; i++) {
        if (titleLayout.getEllipsisCount(i) > 0) {
            return true;
        }
    }
    return false;
}
项目:Sprog-App    文件FancyQuoteSpan.java   
public void drawLeadingMargin(Canvas c,Layout layout) {
    Paint.Style prevStyle = p.getStyle();
    int prevColor = p.getColor();
    p.setStyle(Paint.Style.FILL);
    p.setColor(lineColor);
    c.drawRect(x,x + dir * linewidth,bottom,p);
    p.setStyle(prevStyle);
    p.setColor(prevColor);
}
项目:Simpler    文件StatusDataSetter.java   
/**
 * 微博文本触摸监听处理
 *
 * @param textView 点击的TextView
 * @param event
 * @return true:点击事件被处理;false:点击事件未被处理,向上冒泡
 */
private boolean textTouchEvent(TextView textView,MotionEvent event) {
    boolean ret = false;
    CharSequence text = textView.getText();
    Spannable sText = Spannable.Factory.getInstance().newSpannable(text);
    int action = event.getAction();
    if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) {
        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 offset = layout.getoffsetForHorizontal(line,x);
        ClickableSpan[] links = sText.getSpans(offset,offset,ClickableSpan.class);
        if (links.length != 0) {
            if (action == MotionEvent.ACTION_UP) {
                links[0].onClick(textView);
            }
            ret = true;
        }
    }
    return ret;
}
项目:PlusGram    文件SecretPhotoViewer.java   
private void updateSecretTimeText() {
    if (currentMessageObject == null) {
        return;
    }
    String str = currentMessageObject.getSecretTimeString();
    if (str == null) {
        return;
    }
    if (currentInfoString == null || !currentInfoString.equals(str)) {
        currentInfoString = str;
        infoWidth = (int)Math.ceil(infoPaint.measureText(currentInfoString));
        CharSequence str2 = TextUtils.ellipsize(currentInfoString,infoPaint,infoWidth,TextUtils.TruncateAt.END);
        infoLayout = new StaticLayout(str2,false);
        invalidate();
    }
}
项目:ModPE-IDE-Source    文件LModEditor.java   
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 + mLeftPadding;
            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 ignored) {
        //nothing
    }
}
项目:RNLearn_Project1    文件ReactTextUpdate.java   
/**
 * @deprecated Use a non-deprecated constructor for ReactTextUpdate instead. This one remains
 * because it's being used by a unit test that isn't currently open source.
 */
@Deprecated
public ReactTextUpdate(
    Spannable text,int jsEventCounter,boolean containsImages,float paddingStart,float paddingTop,float paddingEnd,float paddingBottom,int textAlign) {
  this(text,jsEventCounter,containsImages,paddingStart,paddingTop,paddingEnd,paddingBottom,textAlign,Layout.BREAK_STRATEGY_HIGH_QUALITY);
}
项目:Renrentou    文件CountDownView.java   
private void init() {
    circlePaint = new Paint();
    circlePaint.setAntiAlias(true);
    circlePaint.setDither(true);
    circlePaint.setColor(backgroundColor);
    circlePaint.setStyle(Paint.Style.FILL);

    textPaint = new TextPaint();
    textPaint.setAntiAlias(true);
    textPaint.setDither(true);
    textPaint.setColor(textColor);
    textPaint.setTextSize(textSize);
    textPaint.setTextAlign(Paint.Align.CENTER);

    borderPaint = new Paint();
    borderPaint.setAntiAlias(true);
    borderPaint.setDither(true);
    borderPaint.setColor(borderColor);
    borderPaint.setstrokeWidth(borderWidth);
    borderPaint.setStyle(Paint.Style.stroke);

    int textWidth = (int) textPaint.measureText(text.substring(0,(text.length() + 1) / 2));
    staticLayout = new StaticLayout(text,textWidth,1F,false);
}
项目:boohee_v5.6    文件LinkUtils.java   
public boolean onTouchEvent(TextView widget,Spannable buffer,MotionEvent event) {
    if (event.getAction() == 1) {
        this.mLinkClicked = false;
        this.mClickedLink = null;
        int x = (((int) event.getX()) - widget.getTotalPaddingLeft()) + widget.getScrollX();
        int y = (((int) event.getY()) - widget.getTotalPaddingTop()) + widget.getScrollY();
        Layout layout = widget.getLayout();
        int off = layout.getoffsetForHorizontal(layout.getLineForVertical(y),(float) x);
        ClickableSpan[] link = (ClickableSpan[]) buffer.getSpans(off,off,ClickableSpan
                .class);
        if (link.length != 0) {
            SensibleurlSpan span = link[0];
            this.mLinkClicked = span.onClickSpan(widget);
            this.mClickedLink = span.getURL();
            return this.mLinkClicked;
        }
    }
    super.onTouchEvent(widget,event);
    return false;
}
项目:PlusGram    文件HintDialogCell.java   
public void checkUnreadCounter(int mask) {
    if (mask != 0 && (mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) == 0 && (mask & MessagesController.UPDATE_MASK_NEW_MESSAGE) == 0) {
        return;
    }
    TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
    if (dialog != null && dialog.unread_count != 0) {
        if (lastUnreadCount != dialog.unread_count) {
            lastUnreadCount = dialog.unread_count;
            String countString = String.format("%d",dialog.unread_count);
            countWidth = Math.max(AndroidUtilities.dp(12),(int) Math.ceil(countPaint.measureText(countString)));
            countLayout = new StaticLayout(countString,countPaint,countWidth,Layout.Alignment.ALIGN_CENTER,false);
            if (mask != 0) {
                invalidate();
            }
        }
    } else if (countLayout != null) {
        if (mask != 0) {
            invalidate();
        }
        lastUnreadCount = 0;
        countLayout = null;
    }
}
项目:XERUNG    文件MaterialAutoCompleteTextView.java   
/**
 * @return True,minBottomTextLines);
  } else {
    destBottomLines = minBottomLines;
  }
  if (bottomLines != destBottomLines) {
    getBottomLinesAnimator(destBottomLines).start();
  }
  bottomLines = destBottomLines;
  return true;
}
项目:FastTextView    文件TextViewAttrsHelper.java   
private static Layout.Alignment getAlignmentByGravity(int gravity) {
  switch (gravity & Gravity.RELATIVE_HORIZONTAL_GraviTY_MASK) {
    case Gravity.START:
      return Layout.Alignment.ALIGN_norMAL;
    case Gravity.END:
      return Layout.Alignment.ALIGN_OPPOSITE;
    case Gravity.LEFT:
      return Layout.Alignment.ALIGN_LEFT;
    case Gravity.RIGHT:
      return Layout.Alignment.ALIGN_RIGHT;
    case Gravity.CENTER_HORIZONTAL:
      return Layout.Alignment.ALIGN_CENTER;
    default:
      return Layout.Alignment.ALIGN_norMAL;
  }
}
项目:XERUNG    文件MaterialEditText.java   
/**
 * @return True,if adjustments were made that require the view to be invalidated.
 */
private boolean adjustBottomLines() {
  // Bail out if we have a zero width; lines will be adjusted during next layout.
  if (getWidth() == 0) {
    return false;
  }
  int destBottomLines;
  textPaint.setTextSize(bottomTextSize);
  if (tempErrorText != null || helperText != null) {
    Layout.Alignment alignment = (getGravity() & Gravity.RIGHT) == Gravity.RIGHT || isRTL() ?
        Layout.Alignment.ALIGN_OPPOSITE : (getGravity() & Gravity.LEFT) == Gravity.LEFT ?
        Layout.Alignment.ALIGN_norMAL : Layout.Alignment.ALIGN_CENTER;
    textLayout = new StaticLayout(tempErrorText != null ? tempErrorText : helperText,minBottomTextLines);
  } else {
    destBottomLines = minBottomLines;
  }
  if (bottomLines != destBottomLines) {
    getBottomLinesAnimator(destBottomLines).start();
  }
  bottomLines = destBottomLines;
  return true;
}
项目:aos-MediaLib    文件ArtworkFactory.java   
public Bitmap createViewBitmap(View view,Layout textLayout,int bitmapWidth,int bitmapHeight,int vertical_align) {
    final int actualBitmapWidth = getPowerOfTwo(bitmapWidth);
    final int actualBitmapHeight = getPowerOfTwo(bitmapHeight);
    Bitmap destBitmap = Bitmap.createBitmap( actualBitmapWidth,actualBitmapHeight,Bitmap.Config.ARGB_8888 );
    destBitmap.eraseColor(Color.TRANSPARENT);

    synchronized (mCanvas) {
        mCanvas.setBitmap(destBitmap);
        mCanvas.save();

        // Center the bitmap horizontally inside the "powerOfTwo" texture bitmap
           mCanvas.translate((actualBitmapWidth - bitmapWidth) / 2,0);

        // Align vertically depending of the argument
        switch (vertical_align) {
        case ALIGN_BottOM:
            mCanvas.translate(0,actualBitmapHeight - bitmapHeight);
            break;
        case ALIGN_TOP:
            break;
        case ALIGN_CENTER:
        default:
            mCanvas.translate(0,(actualBitmapHeight - bitmapHeight) / 2);
        }

        view.draw(mCanvas);
           if (textLayout != null) {
               // Draw the text using the TextLayout if one is provided
               mCanvas.translate(0,(actualBitmapHeight - bitmapHeight) / 2);
               textLayout.draw(mCanvas);
           }

        mCanvas.restore();
    }
    return destBitmap;
}
项目:HeadlineNews    文件SpanUtils.java   
public void drawLeadingMargin(final Canvas c,final Paint p,final int dir,final int top,final int baseline,final int bottom,final CharSequence text,final int start,final int end,final boolean first,final Layout layout) {
    int st = ((Spanned) text).getSpanStart(this);
    int itop = layout.getLinetop(layout.getLineForOffset(st));

    if (dir < 0)
        x -= mBitmap.getWidth();

    int delta = totalHeight - mBitmap.getHeight();

    if (delta > 0) {
        if (mVerticalAlignment == ALIGN_TOP) {
            c.drawBitmap(mBitmap,itop,p);
        } else if (mVerticalAlignment == ALIGN_CENTER) {
            c.drawBitmap(mBitmap,itop + delta / 2,p);
        } else {
            c.drawBitmap(mBitmap,itop + delta,p);
        }
    } else {
        c.drawBitmap(mBitmap,p);
    }
}
项目:CommentView    文件CanvasTextArea.java   
private Layout makeNewLayout(int i,BoringLayout.Metrics metrics,int i2,boolean z) {
    int i3;
    boolean z2;
    if (i < 0) {
        i3 = 0;
    } else {
        i3 = i;
    }
    this.mOldMaxLines = this.mMaxLines;
    if (this.mEllipsize != null) {
        z2 = true;
    } else {
        z2 = false;
    }
    return makeSingleLayout(i3,metrics,i2,this.mLayoutAlignment,z2,this.mEllipsize,z);
}
项目:qmui    文件QMUILinkTouchDecorHelper.java   
public ITouchableSpan 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);
    if (x < layout.getLineLeft(line) || x > layout.getLineRight(line)) {
        // 实际上没点到任何内容
        off = -1;
    }

    ITouchableSpan[] link = spannable.getSpans(off,ITouchableSpan.class);
    ITouchableSpan touchedSpan = null;
    if (link.length > 0) {
        touchedSpan = link[0];
    }
    return touchedSpan;
}
项目:RNLearn_Project1    文件ReactTextInputShadowNode.java   
@Override
public void setTextBreakStrategy(@Nullable String textBreakStrategy) {
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
    return;
  }

  if (textBreakStrategy == null || "simple".equals(textBreakStrategy)) {
    mTextBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE;
  } else if ("highQuality".equals(textBreakStrategy)) {
    mTextBreakStrategy = Layout.BREAK_STRATEGY_HIGH_QUALITY;
  } else if ("balanced".equals(textBreakStrategy)) {
    mTextBreakStrategy = Layout.BREAK_STRATEGY_BALANCED;
  } else {
    throw new JSApplicationIllegalArgumentException("Invalid textBreakStrategy: " + textBreakStrategy);
  }
}
项目:ucar-weex-core    文件WXText.java   
/**
 * Flush view no matter what height and width the {@link WXDomObject} specifies.
 * @param extra must be a {@link Layout} object,nothing will happen.
 */
private void flushView(Object extra) {
  if (extra instanceof Layout &&
      getHostView() != null && !extra.equals(getHostView().getTextLayout())) {
    final Layout layout = (Layout) extra;
    /**The following if block change the height of the width of the textView.
     * other part of the code is the same to updateExtra
     */
    ViewGroup.LayoutParams layoutParams = getHostView().getLayoutParams();
    if (layoutParams != null) {
      layoutParams.height = layout.getHeight();
      layoutParams.width = layout.getWidth();
      getHostView().setLayoutParams(layoutParams);
    }
    getHostView().setTextLayout(layout);
    getHostView().invalidate();
  }
}
项目:android-slidr    文件Sushi.java   
private void drawMultilineText(Canvas canvas,TextPaint paint,Layout.Alignment aligment) {
    final float lineHeight = paint.getTextSize();
    float lineY = y;
    for (CharSequence line : text.split("\n")) {
        canvas.save();
        {
            final float linewidth = (int) paint.measureText(line.toString());
            float lineX = x;
            if (aligment == Layout.Alignment.ALIGN_CENTER) {
                lineX -= linewidth / 2f;
            }
            if (lineX < 0) {
                lineX = 0;
            }

            final float right = lineX + linewidth;
            if (right > canvas.getWidth()) {
                lineX = canvas.getWidth() - linewidth - settings.paddingCorners;
            }

            canvas.translate(lineX,lineY);
            final StaticLayout staticLayout = new StaticLayout(line,paint,(int) linewidth,aligment,false);
            staticLayout.draw(canvas);

            lineY += lineHeight;
        }
        canvas.restore();
    }

}
项目:weex-uikit    文件WXStyle.java   
public static Layout.Alignment getTextAlignment(Map<String,Object> style){
  Layout.Alignment alignment= Layout.Alignment.ALIGN_norMAL;
  String textAlign= (String) style.get(Constants.Name.TEXT_ALIGN);
  if(TextUtils.equals(Constants.Value.LEFT,textAlign)){
    alignment= Layout.Alignment.ALIGN_norMAL;
  }
  else if(TextUtils.equals(Constants.Value.CENTER,textAlign)){
    alignment=Layout.Alignment.ALIGN_CENTER;
  }
  else if(TextUtils.equals(Constants.Value.RIGHT,textAlign)){
    alignment= Layout.Alignment.ALIGN_OPPOSITE;
  }
  return alignment;
}
项目:weex-uikit    文件WXText.java   
@Override
public void updateExtra(Object extra) {
  if (extra instanceof Layout &&
      getHostView() != null && !extra.equals(getHostView().getTextLayout())) {
    final Layout layout = (Layout) extra;
    getHostView().setTextLayout(layout);
    getHostView().invalidate();
  }
}
项目:GitHub    文件WheelView.java   
/**
 * Calculates desired height for layout
 *
 * @param layout the source layout
 * @return the desired layout height
 */
private int getDesiredHeight(Layout layout) {
    if (layout == null) {
        return 0;
    }

    int desired = getItemHeight() * visibleItems - ITEM_OFFSET * 2
            - ADDITIONAL_ITEM_HEIGHT;

    // Check against our minimum height
    desired = Math.max(desired,getSuggestedMinimumHeight());

    return desired;
}
项目:show-case-card-view    文件WrapWidthTextView.java   
private float getMaxlinewidth(Layout layout) {
    float max_width = 0.0f;
    int lines = layout.getLineCount();
    for (int i = 0; i < lines; i++) {
        if (layout.getlinewidth(i) > max_width) {
            max_width = layout.getlinewidth(i);
        }
    }
    return max_width;
}
项目:RNLearn_Project1    文件RCTText.java   
@Override
/* package */ void updateNodeRegion(
    float left,float top,float right,float bottom,boolean isVirtual) {

  NodeRegion nodeRegion = getNodeRegion();
  if (mDrawCommand == null) {
    if (!nodeRegion.matches(left,isVirtual)) {
      setNodeRegion(new TextNodeRegion(left,getReactTag(),isVirtual,null));
    }
    return;
  }

  Layout layout = null;

  if (nodeRegion instanceof TextNodeRegion) {
    layout = ((TextNodeRegion) nodeRegion).getLayout();
  }

  Layout newLayout = mDrawCommand.getLayout();
  if (!nodeRegion.matches(left,isVirtual) || layout != newLayout) {
    setNodeRegion(
        new TextNodeRegion(left,newLayout));
  }
}
项目:javaide    文件LineUtils.java   
public static int getStartIndexAtLine(EditText editable,int line) {
    Layout layout = editable.getLayout();
    if (layout != null) {
        return layout.getLinestart(line);
    }
    return 0;
}
项目:CommentView    文件CanvasTextArea.java   
protected void onMeasure(int i,int i2) {
    String generateCacheKey = generateCacheKey();
    this.mCacheText = (TextCache) getAreaCache(generateCacheKey);
    if (this.mCacheText == null || this.mCacheText.mLayout == null || this.mMeasureDirty) {
        this.mCacheText = new TextCache();
        addAreaCache(generateCacheKey,this.mCacheText);
        int mode = View.MeasureSpec.getMode(i);
        int mode2 = View.MeasureSpec.getMode(i2);
        int size = View.MeasureSpec.getSize(i);
        int size2 = View.MeasureSpec.getSize(i2);
        if (mode == 1073741824) {
            this.mCacheText.measuredWidth = size;
        } else {
            this.mBoring = BoringLayout.isBoring(this.mText,this.mPaint,UNKNowN_BORING);
            if (this.mBoring == null || this.mBoring == UNKNowN_BORING) {
                this.mCacheText.measuredWidth = (int) Layout.getDesiredWidth(this.mText,this.mPaint);
            } else {
                this.mCacheText.measuredWidth = this.mBoring.width;
            }
            TextCache textCache = this.mCacheText;
            textCache.measuredWidth = textCache.measuredWidth + (this.paddingLeft + this.paddingRight);
            if (mode == Integer.MIN_VALUE) {
                this.mCacheText.measuredWidth = Math.min(size,this.mCacheText.measuredWidth);
            }
        }
        mode = (this.mCacheText.measuredWidth - this.paddingLeft) - this.paddingRight;
        this.mCacheText.mLayout = makeNewLayout(mode,this.mBoring,mode,false);
        if (mode2 == 1073741824) {
            this.mCacheText.measuredHeight = size2;
        } else {
            this.mCacheText.measuredHeight = getDesiredHeight();
            if (mode2 == Integer.MIN_VALUE) {
                this.mCacheText.measuredHeight = Math.min(size2,this.mCacheText.measuredHeight);
            }
        }
        setMeasuredDimension(this.mCacheText.measuredWidth,this.mCacheText.measuredHeight);
        return;
    }
    setMeasuredDimension(this.mCacheText.measuredWidth,this.mCacheText.measuredHeight);
}
项目:OSchina_resources_android    文件RichEditText.java   
private static Layout.Alignment getAlignment(int alignment) {
    if (alignment == TextSection.CENTER) {
        return Layout.Alignment.ALIGN_CENTER;
    } else if (alignment == TextSection.RIGHT)
        return Layout.Alignment.ALIGN_OPPOSITE;
    return Layout.Alignment.ALIGN_norMAL;
}
项目:SmartChart    文件BannerTextView.java   
private int getHeightS() {
    TextPaint textPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
    textPaint.setTextSize(getTextSize());
    StaticLayout staticLayout = new StaticLayout(textList.get(currentPosition),getWidth() - getPaddingLeft() - getPaddingRight(),false);
    int height = staticLayout.getHeight();
    if (staticLayout.getLineCount() > getMaxLines()) {
        int lineCount = staticLayout.getLineCount();
        height = staticLayout.getLineBottom(getMaxLines() - 1);
    }
    return height;
}
项目:OSchina_resources_android    文件TweetTextView.java   
public boolean handletouchEvent(MotionEvent event) {
    int action = event.getAction();
    if (action != MotionEvent.ACTION_UP
            && action != MotionEvent.ACTION_DOWN) {
        return true;
    } else {
        int x = (int) event.getX();
        int y = (int) event.getY();

        x -= getTotalPaddingLeft();
        y -= getTotalPaddingTop();

        x += getScrollX();
        y += getScrollY();
        Layout layout = getLayout();
        int line = layout.getLineForVertical(y);
        int offset = layout.getoffsetForHorizontal(line,x);

        float width = layout.getlinewidth(line);
        if (y > width) {
            offset = y;
        }

        if (!(getText() instanceof Spannable)) {
            return true;
        } else {
            Spannable span = (Spannable) getText();
            ClickableSpan[] clickSpan = span.getSpans(offset,ClickableSpan.class);
            if (clickSpan == null || clickSpan.length == 0) {
                am[] aam = span.getSpans(offset,am.class);
                if (aam != null && aam.length != 0)
                    return false;
                return true;
            } else {
                return false;
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。