项目: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);
}
}
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();
}
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
项目: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);
}
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
项目: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
项目: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] 举报,一经查实,本站将立刻删除。