android.text.Spanned Java Examples
The following examples show how to use
android.text.Spanned.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source Project: Netease Author: freedomofme File: NewsDisplayActivity.java License: GNU General Public License v3.0 | 6 votes |
private void updateViewFromJSON(NewRoot newRoot) { NewsID hold = newRoot.getNewsID(); //设置标题 title.setText(hold.getTitle()); //设置作者和时间 int first = hold.getPtime().indexOf("-"); int last = hold.getPtime().lastIndexOf(":"); authorAndTime.setText(hold.getSource() + " " + hold.getPtime().substring(first + 1, last)); //设置正文 String body = hold.getBody(); for (Img img : hold.getImg()) { body = body.replace(img.getRef(), template.replace("LINK", img.getSrc())); } Log.i("RVA", "设置body: " + body); URLImageParser p = new URLImageParser(content, this); Spanned htmlSpan = Html.fromHtml(body, p, null); content.setText(htmlSpan); content.setTextSize(18); }
Example #2
Source Project: NewFastFrame Author: HelloChenJinJun File: ShareShareInfoHolder.java License: Apache License 2.0 | 6 votes |
private SpannableStringBuilder getSpannerContent(String name, String uid, CharSequence content) { SpannableStringBuilder builder = new SpannableStringBuilder(); String str = "@" + name + ":"; SpannableString spannableString = new SpannableString(str); spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#232121")), 0, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { if (uid != null) { UserDetailActivity.start((Activity) widget.getContext(), uid); } else { ToastUtils.showShortToast("用户数据加载失败"); } } }, 0, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.append(spannableString).append(content); return builder; }
Example #3
Source Project: edslite Author: sovworks File: EditableSecureBuffer.java License: GNU General Public License v2.0 | 6 votes |
private boolean removeSpansForChange(int start, int end, boolean textIsRemoved, int i) { if(VERBOSE_LOG) Logger.debug(TAG + ": in removeSpansForChange"); if ((i & 1) != 0) { // internal tree node if (resolveGap(mSpanMax[i]) >= start && removeSpansForChange(start, end, textIsRemoved, leftChild(i))) { return true; } } if (i < mSpanCount) { if ((mSpanFlags[i] & Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) == Spanned.SPAN_EXCLUSIVE_EXCLUSIVE && mSpanStarts[i] >= start && mSpanStarts[i] < mGapStart + mGapLength && mSpanEnds[i] >= start && mSpanEnds[i] < mGapStart + mGapLength && // The following condition indicates that the span would become empty (textIsRemoved || mSpanStarts[i] > start || mSpanEnds[i] < mGapStart)) { mIndexOfSpan.remove(mSpans[i]); removeSpan(i); return true; } return resolveGap(mSpanStarts[i]) <= end && (i & 1) != 0 && removeSpansForChange(start, end, textIsRemoved, rightChild(i)); } return false; }
Example #4
Source Project: styT Author: stytooldex File: HelpsMainAdapter.java License: Apache License 2.0 | 6 votes |
/** * 替换表情 * * @param str * @param context * @return */ private SpannableString getSpannableString(String str, Context context) { SpannableString spannableString = new SpannableString(str); String s = "\\[(.+?)\\]"; Pattern pattern = Pattern.compile(s, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(spannableString); while (matcher.find()) { String key = matcher.group(); int id = Expression.getIdAsName(key); if (id != 0) { Drawable drawable = context.getResources().getDrawable(id); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); ImageSpan imageSpan = new ImageSpan(drawable); spannableString.setSpan(imageSpan, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } return spannableString; }
Example #5
Source Project: PowerFileExplorer Author: PowerExplorer File: Selection.java License: GNU General Public License v3.0 | 6 votes |
/** * Set the selection anchor to <code>start</code> and the selection edge * to <code>stop</code>. */ public static void setSelection(Spannable text, int start, int stop) { // int len = text.length(); // start = pin(start, 0, len); XXX remove unless we really need it // stop = pin(stop, 0, len); int ostart = getSelectionStart(text); int oend = getSelectionEnd(text); if (ostart != start || oend != stop) { text.setSpan(SELECTION_START, start, start, Spanned.SPAN_POINT_POINT|Spanned.SPAN_INTERMEDIATE); text.setSpan(SELECTION_END, stop, stop, Spanned.SPAN_POINT_POINT); } }
Example #6
Source Project: Spyglass Author: linkedin File: WordTokenizer.java License: Apache License 2.0 | 6 votes |
/** * Returns the index of the end of the last span before the cursor or * the start of the current line if there are no spans before the cursor. * * @param text the {@link Spanned} to examine * @param cursor position of the cursor in text * * @return the furthest in front of the cursor to search for the current keywords */ protected int getSearchStartIndex(final @NonNull Spanned text, int cursor) { if (cursor < 0 || cursor > text.length()) { cursor = 0; } // Get index of the end of the last span before the cursor (or 0 if does not exist) MentionSpan[] spans = text.getSpans(0, text.length(), MentionSpan.class); int closestToCursor = 0; for (MentionSpan span : spans) { int end = text.getSpanEnd(span); if (end > closestToCursor && end <= cursor) { closestToCursor = end; } } // Get the index of the start of the line String textString = text.toString().substring(0, cursor); int lineStartIndex = 0; if (textString.contains(mConfig.LINE_SEPARATOR)) { lineStartIndex = textString.lastIndexOf(mConfig.LINE_SEPARATOR) + 1; } // Return whichever is closer before to the cursor return Math.max(closestToCursor, lineStartIndex); }
Example #7
Source Project: monolog-android Author: huijimuhe File: SignInActivity.java License: MIT License | 6 votes |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_in); //handler init handler=new MyHandler(this); mBtnWeixin = (Button) findViewById(R.id.btn_weixin); mTvAgreement = (TextView) findViewById(R.id.tv_user_agreement); mBtnWeixin.setOnClickListener(this); //agreement SpannableString agreement = new SpannableString("使用即表示同意用户协议"); agreement.setSpan(new NoLineClickSpan(), 7, agreement.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); mTvAgreement.setText(agreement); mTvAgreement.setMovementMethod(LinkMovementMethod.getInstance()); //set up umeng mLoginController.getConfig().setSsoHandler(new SinaSsoHandler()); String appId = AppContext.getInstance().getMetaData("WEIXIN_ID"); String appSecret = AppContext.getInstance().getMetaData("WEIXIN_SECRET"); // 添加微信平台 UMWXHandler wxHandler = new UMWXHandler(SignInActivity.this, appId, appSecret); wxHandler.addToSocialSDK(); }
Example #8
Source Project: Silence Author: SilenceIM File: ConfirmIdentityDialog.java License: GNU General Public License v3.0 | 6 votes |
public ConfirmIdentityDialog(Context context, MasterSecret masterSecret, MessageRecord messageRecord, IdentityKeyMismatch mismatch) { super(context); Recipient recipient = RecipientFactory.getRecipientForId(context, mismatch.getRecipientId(), false); String name = recipient.toShortString(); String introduction = String.format(context.getString(R.string.ConfirmIdentityDialog_the_signature_on_this_key_exchange_is_different), name, name); SpannableString spannableString = new SpannableString(introduction + " " + context.getString(R.string.ConfirmIdentityDialog_you_may_wish_to_verify_this_contact)); spannableString.setSpan(new VerifySpan(context, mismatch), introduction.length()+1, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); setTitle(name); setMessage(spannableString); setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.ConfirmIdentityDialog_accept), new AcceptListener(masterSecret, messageRecord, mismatch)); setButton(AlertDialog.BUTTON_NEGATIVE, context.getString(android.R.string.cancel), new CancelListener()); }
Example #9
Source Project: Markwon Author: noties File: TestSpanMatcher.java License: Apache License 2.0 | 6 votes |
public static void textMatches( @NonNull Spanned spanned, int start, int end, @NonNull TestSpan.Text text) { final String expected = text.literal(); final String actual = spanned.subSequence(start, end).toString(); if (!expected.equals(actual)) { throw new ComparisonFailure( String.format(Locale.US, "Text mismatch at {start: %d, end: %d}", start, end), expected, actual ); } }
Example #10
Source Project: ExoVideoView Author: JarvanMo File: ExoVideoPlaybackControlView.java License: Apache License 2.0 | 6 votes |
private CharSequence generateFastForwardOrRewindTxt(long changingTime) { long duration = player == null ? 0 : player.getDuration(); String result = Util.getStringForTime(formatBuilder, formatter, changingTime); result = result + "/"; result = result + Util.getStringForTime(formatBuilder, formatter, duration); int index = result.indexOf("/"); SpannableString spannableString = new SpannableString(result); TypedValue typedValue = new TypedValue(); TypedArray a = getContext().obtainStyledAttributes(typedValue.data, new int[]{R.attr.colorAccent}); int color = a.getColor(0, 0); a.recycle(); spannableString.setSpan(new ForegroundColorSpan(color), 0, index, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); spannableString.setSpan(new ForegroundColorSpan(Color.WHITE), index, result.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); return spannableString; }
Example #11
Source Project: memoir Author: ronak-manglani File: ConverterHtmlToSpanned.java License: Apache License 2.0 | 6 votes |
private void endHeader() { int len = mResult.length(); Object obj = getLast(Header.class); int where = mResult.getSpanStart(obj); mResult.removeSpan(obj); // Back off not to change only the text, not the blank line. while (len > where && mResult.charAt(len - 1) == '\n') { len--; } if (where != len) { Header h = (Header) obj; mResult.setSpan(new RelativeSizeSpan(HEADER_SIZES[h.mLevel]), where, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mResult.setSpan(new BoldSpan(), where, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } }
Example #12
Source Project: JotaTextEditor Author: jiro-aqua File: DrawableMarginSpan.java License: Apache License 2.0 | 6 votes |
public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout) { int st = ((Spanned) text).getSpanStart(this); int ix = (int)x; int itop = (int)layout.getLineTop(layout.getLineForOffset(st)); int dw = mDrawable.getIntrinsicWidth(); int dh = mDrawable.getIntrinsicHeight(); if (dir < 0) x -= dw; // XXX What to do about Paint? mDrawable.setBounds(ix, itop, ix+dw, itop+dh); mDrawable.draw(c); }
Example #13
Source Project: memoir Author: ronak-manglani File: RTLayout.java License: Apache License 2.0 | 6 votes |
public RTLayout(Spanned spanned) { if (spanned != null) { String s = spanned.toString(); int len = s.length(); // find the line breaks and the according lines / paragraphs mNrOfLines = 1; Matcher m = LINEBREAK_PATTERN.matcher(s.substring(0, len)); int groupStart = 0; while (m.find()) { // the line feeds are part of the paragraph isFirst isLast Paragraph paragraph = new Paragraph(groupStart, m.end(), mNrOfLines == 1, false); mParagraphs.add(paragraph); groupStart = m.end(); mNrOfLines++; } // even an empty line after the last cr/lf is considered a paragraph if (mParagraphs.size() < mNrOfLines) { mParagraphs.add(new Paragraph(groupStart, len, mNrOfLines == 1, true)); } } }
Example #14
Source Project: Tehreer-Android Author: Tehreer File: LinkableLabel.java License: Apache License 2.0 | 6 votes |
private void refreshActiveLink() { Spanned spanned = getSpanned(); ComposedFrame composedFrame = getComposedFrame(); if (spanned != null && composedFrame != null && mActiveLinkSpan != null) { int spanStart = spanned.getSpanStart(mActiveLinkSpan); int spanEnd = spanned.getSpanEnd(mActiveLinkSpan); mActiveLinkPath = composedFrame.generateSelectionPath(spanStart, spanEnd); mActiveLinkPath.offset(composedFrame.getOriginX(), composedFrame.getOriginY()); } else { mActiveLinkPath = null; } invalidate(); }
Example #15
Source Project: Walrus Author: TeamWalrus File: StaticKeyMifareReadStep.java License: GNU General Public License v3.0 | 6 votes |
public SpannableStringBuilder getDescription(Context context) { SpannableStringBuilder builder = new SpannableStringBuilder(); // TODO XXX: i18n (w/ proper pluralisation) MiscUtils.appendAndSetSpan(builder, "Block(s): ", new StyleSpan(android.graphics.Typeface.BOLD), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.append(MiscUtils.unparseIntRanges(blockNumbers)); builder.append('\n'); MiscUtils.appendAndSetSpan(builder, "Key: ", new StyleSpan(android.graphics.Typeface.BOLD), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.append(key.toString()); builder.append('\n'); MiscUtils.appendAndSetSpan(builder, "Slot(s): ", new StyleSpan(android.graphics.Typeface.BOLD), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); builder.append( keySlotAttempts == KeySlotAttempts.BOTH ? context.getString(R.string.both) : keySlotAttempts.toString()); return builder; }
Example #16
Source Project: AgentWebX5 Author: Justson File: AgentWebX5Utils.java License: Apache License 2.0 | 6 votes |
public static void show(View parent, CharSequence text, int duration, @ColorInt int textColor, @ColorInt int bgColor, CharSequence actionText, @ColorInt int actionTextColor, View.OnClickListener listener) { SpannableString spannableString = new SpannableString(text); ForegroundColorSpan colorSpan = new ForegroundColorSpan(textColor); spannableString.setSpan(colorSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); snackbarWeakReference = new WeakReference<>(Snackbar.make(parent, spannableString, duration)); Snackbar snackbar = snackbarWeakReference.get(); View view = snackbar.getView(); view.setBackgroundColor(bgColor); if (actionText != null && actionText.length() > 0 && listener != null) { snackbar.setActionTextColor(actionTextColor); snackbar.setAction(actionText, listener); } snackbar.show(); }
Example #17
Source Project: ncalc Author: tranleduy2000 File: AutoCompleteFunctionEditText.java License: GNU General Public License v3.0 | 5 votes |
public void highlight(Editable editable) { disableTextChangeListener(); StyleSpan[] spans = editable.getSpans(0, editable.length(), StyleSpan.class); for (StyleSpan span : spans) { editable.removeSpan(span); } String s = editable.toString(); Matcher matcher = mFunctionPattern.matcher(s); while (matcher.find()) { StyleSpan styleSpan = new StyleSpan(Typeface.BOLD); editable.setSpan(styleSpan, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } enableTextChangeListener(); }
Example #18
Source Project: o2oa Author: o2oa File: RichEditText.java License: GNU Affero General Public License v3.0 | 5 votes |
public static Spannable matchMention(Spannable spannable) { String text = spannable.toString(); Pattern pattern = Pattern.compile(MATCH_MENTION); Matcher matcher = pattern.matcher(text); while (matcher.find()) { String str = matcher.group(); int matcherStart = matcher.start(); int matcherEnd = matcher.end(); spannable.setSpan(new TagSpan(str), matcherStart, matcherEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); log("matchMention:" + str + " " + matcherStart + " " + matcherEnd); } return spannable; }
Example #19
Source Project: TelePlus-Android Author: TelePlusDev File: Tx3gDecoder.java License: GNU General Public License v2.0 | 5 votes |
@SuppressWarnings("ReferenceEquality") private static void attachFontFamily(SpannableStringBuilder cueText, String fontFamily, String defaultFontFamily, int start, int end, int spanPriority) { if (fontFamily != defaultFontFamily) { cueText.setSpan(new TypefaceSpan(fontFamily), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | spanPriority); } }
Example #20
Source Project: ResearchStack Author: ResearchStack File: TextUtils.java License: Apache License 2.0 | 5 votes |
@Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if (!Character.isLetterOrDigit(source.charAt(i))) { return ""; } } return null; }
Example #21
Source Project: Markwon Author: noties File: TextLayoutSpan.java License: Apache License 2.0 | 5 votes |
/** * @see #applyTo(Spannable, Layout) */ @Nullable public static Layout layoutOf(@NonNull CharSequence cs) { if (cs instanceof Spanned) { return layoutOf((Spanned) cs); } return null; }
Example #22
Source Project: LinkTextView Author: zekunyan File: LinkTextView.java License: MIT License | 5 votes |
/** * Remove link by link ID * * @param linkID */ public void removeLink(int linkID) { if (!mLinkIDMap.containsKey(linkID)) { return; } try { mLinkIDMap.remove(linkID); } catch (Exception e) { //TODO: Log... } //Reset all links mSpannableString = new SpannableString(mOriginText); for (Integer id : mLinkIDMap.keySet()) { final LinkTextHolder linkTextHolder = mLinkIDMap.get(id); mSpannableString.setSpan(new TouchableSpan(linkTextHolder) { @Override public void onClick(View view) { if (linkTextHolder.mOnClickInLinkText != null) { linkTextHolder.mOnClickInLinkText.onLinkTextClick(linkTextHolder.mText, linkTextHolder.mLinkID, linkTextHolder.mAttachment); } } }, linkTextHolder.mBeginIndex, linkTextHolder.mEndIndex, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } updateLinks(); }
Example #23
Source Project: Android-RTEditor Author: 1gravity File: ConverterHtmlToSpanned.java License: Apache License 2.0 | 5 votes |
private Object getLast(Spanned text, Class<?> kind) { /* * This knows that the last returned object from getSpans() * will be the most recently added. */ Object[] objs = text.getSpans(0, text.length(), kind); return objs.length == 0 ? null : objs[objs.length - 1]; }
Example #24
Source Project: AndFChat Author: AndFChat File: AdEntry.java License: GNU General Public License v3.0 | 5 votes |
public Spannable createText(Context context) { String text = getText(context); text = BBCodeReader.modifyUrls(text, "http://"); //text = BBCodeReader.modifyUrls(text, "https://"); final Spannable textSpan = SmileyReader.addSmileys(context, BBCodeReader.createSpannableWithBBCode(text, context)); if (adClickListener != null && !showText) { // Create display text Spannable displayedSpan = new SpannableString(displayText); ClickableSpan clickable = new ClickableSpan() { @Override public void onClick(View widget) { adClickListener.openAd(textSpan); } }; displayedSpan.setSpan(clickable, 0, displayedSpan.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); return displayedSpan; } else { return textSpan; } }
Example #25
Source Project: Pugnotification Author: halysongoncalves File: Load.java License: Apache License 2.0 | 5 votes |
public Load message(@NonNull Spanned messageSpanned) { if (messageSpanned.length() == 0) { throw new IllegalArgumentException("Message Must Not Be Empty!"); } this.messageSpanned = messageSpanned; this.builder.setContentText(messageSpanned); return this; }
Example #26
Source Project: EdXposedManager Author: ElderDrivers File: RepoParser.java License: GNU General Public License v3.0 | 5 votes |
public static Spanned parseSimpleHtml(final Context c, String source, final TextView textView) { source = source.replaceAll("<li>", "\t\u0095 "); source = source.replaceAll("</li>", "<br>"); Spanned html = Html.fromHtml(source, Html.FROM_HTML_MODE_COMPACT, source1 -> { LevelListDrawable d = new LevelListDrawable(); Drawable empty = c.getResources().getDrawable(R.drawable.ic_no_image, null); d.addLevel(0, 0, empty); assert empty != null; d.setBounds(0, 0, empty.getIntrinsicWidth(), empty.getIntrinsicHeight()); new ImageGetterAsyncTask(c, source1, d).execute(textView); return d; }, null); // trim trailing newlines int len = html.length(); int end = len; for (int i = len - 1; i >= 0; i--) { if (html.charAt(i) != '\n') break; end = i; } if (end == len) return html; else return new SpannableStringBuilder(html, 0, end); }
Example #27
Source Project: sms-ticket Author: SMSTicket File: EulaDialogFragment.java License: Apache License 2.0 | 5 votes |
private View getCustomView() { View customView = LayoutInflater.from(getActivity()).inflate(R.layout.view_eula_dialog, null); final TextView txtEulaContent = (TextView)customView.findViewById(R.id.txt_eula_content); final ProgressBar progressWheel = (ProgressBar)customView.findViewById(R.id.progress_bar); new BaseAsyncTask() { String eula; Spanned spannedEula; @Override protected void onPreExecute() { super.onPreExecute(); progressWheel.setVisibility(View.VISIBLE); } @Override public void doInBackground() { eula = getStringFromAssets(App.getInstance(), "eula.html"); spannedEula = Html.fromHtml(eula); } @Override public void onPostExecute() { super.onPostExecute(); progressWheel.setVisibility(View.GONE); txtEulaContent.setText(spannedEula); } }.start(); return customView; }
Example #28
Source Project: socialview Author: hendraanggrian File: SocialViewHelper.java License: Apache License 2.0 | 5 votes |
private static void spanAll(Spannable spannable, Pattern pattern, Supplier<CharacterStyle> styleSupplier) { final Matcher matcher = pattern.matcher(spannable); while (matcher.find()) { final int start = matcher.start(); final int end = matcher.end(); final Object span = styleSupplier.get(); spannable.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if (span instanceof SocialClickableSpan) { ((SocialClickableSpan) span).text = spannable.subSequence(start, end); } } }
Example #29
Source Project: Ruisi Author: xidian-rs File: EmotionInputHandler.java License: Apache License 2.0 | 5 votes |
public void insertImage(String s, Drawable drawable, int maxWidth) { if (drawable != null) { s = "[attachimg]" + s + "[/attachimg]"; AttachImage imageSpan = new AttachImage(s, drawable, maxWidth); int start = mEditor.getSelectionStart(); int end = mEditor.getSelectionEnd(); Editable editableText = mEditor.getEditableText(); // Insert the emoticon. editableText.replace(start, end, s); editableText.setSpan(imageSpan, start, start + s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } }
Example #30
Source Project: android-discourse Author: goodev File: HtmlTagHandler.java License: Apache License 2.0 | 5 votes |
private static void end(Editable text, Class<?> kind, Object... replaces) { int len = text.length(); Object obj = getLast(text, kind); int where = text.getSpanStart(obj); text.removeSpan(obj); if (where != len) { for (Object replace : replaces) { text.setSpan(replace, where, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } return; }