/** * Called when the end of a paragraph is encountered. Adds a newline if there are one or more * non-space characters since the previous newline. * * @param builder The builder. */ /* package */ static void endParagraph(SpannableStringBuilder builder) { int position = builder.length() - 1; while (position >= 0 && builder.charAt(position) == ' ') { position--; } if (position >= 0 && builder.charAt(position) != '\n') { builder.append('\n'); } }
if (builder.charAt(i) == ' ') { int j = i + 1; while (j < builder.length() && builder.charAt(j) == ' ') { j++; if (builderLength > 0 && builder.charAt(0) == ' ') { builder.delete(0, 1); builderLength--; if (builder.charAt(i) == '\n' && builder.charAt(i + 1) == ' ') { builder.delete(i + 1, i + 2); builderLength--; if (builderLength > 0 && builder.charAt(builderLength - 1) == ' ') { builder.delete(builderLength - 1, builderLength); builderLength--; if (builder.charAt(i) == ' ' && builder.charAt(i + 1) == '\n') { builder.delete(i, i + 1); builderLength--; if (builderLength > 0 && builder.charAt(builderLength - 1) == '\n') { builder.delete(builderLength - 1, builderLength);
pred = '\n'; } else { pred = mSpannableStringBuilder.charAt(len - 1);
private static void endHeader(SpannableStringBuilder text) { int len = text.length(); Object obj = getLast(text, Header.class); int where = text.getSpanStart(obj); text.removeSpan(obj); // Back off not to change only the text, not the blank line. while (len > where && text.charAt(len - 1) == '\n') { len--; } if (where != len) { Header h = (Header) obj; text.setSpan(new RelativeSizeSpan(HEADER_SIZES[h.mLevel]), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); text.setSpan(new StyleSpan(Typeface.BOLD), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } }
@Override public char charAt(int index) { return mSpannableString.charAt(index); }
SpannableStringBuilder resultSpan = new SpannableStringBuilder(yourString); for (int i = 0; i < resultSpan.length(); i++) { if (resultSpan.charAt(i) == '\u0180') { CustomTypefaceSpan typefaceSpan = new CustomTypefaceSpan(customTypeface); resultSpan.setSpan(typefaceSpan, i, i + 1, 0); } }
public SpannableStringBuilder trimTrailingWhitespace( SpannableStringBuilder spannableString) { if (spannableString == null) return new SpannableStringBuilder(""); int i = spannableString.length(); // loop back to the first non-whitespace character while (--i >= 0 && Character.isWhitespace(spannableString.charAt(i))) { } return new SpannableStringBuilder(spannableString.subSequence(0, i + 1)); }
private void addNewLine(SpannableStringBuilder text) { final int len = text.length(); if (len >= 1 && text.charAt(len - 1) == '\n') { return; } if (len != 0) { text.append("\n"); } }
private void removeTrailingLineBreaks() { int end = mResult.length(); while (end > 0 && mResult.charAt(end - 1) == '\n') { end--; } if (end < mResult.length()) { mResult = SpannableStringBuilder.valueOf(mResult.subSequence(0, end)); } }
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); } }
/** * Parse the given input using {@link TouchableUrlSpan}s rather than vanilla {@link URLSpan}s * so that they respond to touch. */ public SpannableStringBuilder parseHtml( String input, ColorStateList linkTextColor) { SpannableStringBuilder spanned = fromHtml(input); // strip any trailing newlines while (spanned.charAt(spanned.length() - 1) == '\n') { spanned = spanned.delete(spanned.length() - 1, spanned.length()); } return linkifyPlainLinks(spanned, linkTextColor); }