android.text.SpannableStringBuilder#subSequence ( )源码实例Demo

下面列出了android.text.SpannableStringBuilder#subSequence ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Markdown   文件: TagHandlerImpl.java
@Override
public boolean em(Line line) {
    line = line.get();
    SpannableStringBuilder builder = (SpannableStringBuilder) line.getStyle();
    Matcher matcher = obtain(Tag.EM, builder);
    while (matcher.find()) {
        int start = matcher.start(1);
        int end = matcher.end(1);
        if (checkInCode(builder, start, end)) {
            continue;
        }
        SpannableStringBuilder sb = (SpannableStringBuilder) builder.subSequence(matcher.start(3), matcher.end(3));
        builder.delete(matcher.start(1), matcher.end(1));
        builder.insert(matcher.start(1), styleBuilder.em(sb));
        em(line);
        return true;
    }
    return false;
}
 
源代码2 项目: Markdown   文件: TagHandlerImpl.java
@Override
public boolean italic(Line line) {
    line = line.get();
    SpannableStringBuilder builder = (SpannableStringBuilder) line.getStyle();
    Matcher matcher = obtain(Tag.ITALIC, builder);
    while (matcher.find()) {
        int start = matcher.start(1);
        int end = matcher.end(1);
        if (checkInCode(builder, start, end)) {
            continue;
        }
        SpannableStringBuilder sb = (SpannableStringBuilder) builder.subSequence(matcher.start(3), matcher.end(3));
        builder.delete(matcher.start(1), matcher.end(1));
        builder.insert(matcher.start(1), styleBuilder.italic(sb));
        italic(line);
        return true;
    }
    return false;
}
 
源代码3 项目: Markdown   文件: TagHandlerImpl.java
@Override
public boolean emItalic(Line line) {
    line = line.get();
    SpannableStringBuilder builder = (SpannableStringBuilder) line.getStyle();
    Matcher matcher = obtain(Tag.EM_ITALIC, builder);
    while (matcher.find()) {
        int start = matcher.start(1);
        int end = matcher.end(1);
        if (checkInCode(builder, start, end)) {
            continue;
        }
        SpannableStringBuilder sb = (SpannableStringBuilder) builder.subSequence(matcher.start(3), matcher.end(3));
        builder.delete(matcher.start(1), matcher.end(1));
        builder.insert(matcher.start(1), styleBuilder.emItalic(sb));
        emItalic(line);
        return true;
    }
    return false;
}
 
源代码4 项目: Markdown   文件: TagHandlerImpl.java
@Override
public boolean delete(Line line) {
    line = line.get();
    SpannableStringBuilder builder = (SpannableStringBuilder) line.getStyle();
    Matcher matcher = obtain(Tag.DELETE, builder);
    while (matcher.find()) {
        int start = matcher.start(1);
        int end = matcher.end(1);
        if (checkInCode(builder, start, end)) {
            continue;
        }
        SpannableStringBuilder sb = (SpannableStringBuilder) builder.subSequence(matcher.start(3), matcher.end(3));
        builder.delete(matcher.start(1), matcher.end(1));
        builder.insert(matcher.start(1), styleBuilder.delete(sb));
        delete(line);
        return true;
    }
    return false;
}
 
源代码5 项目: advanced-textview   文件: StyledStringActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_styled_string);

  SpannableStringBuilder builder = new SpannableStringBuilder()
      .append(formatString(this, R.string.big_red, R.style.BigRedTextAppearance))
      .append("\n")
      .append(formatString(this, R.string.medium_green, R.style.MediumGreenTextAppearance))
      .append("\n")
      .append(formatString(this, R.string.small_blue, R.style.SmallBlueTextAppearance));
  CharSequence styledString = builder.subSequence(0, builder.length());

  TextView textView = (TextView) findViewById(R.id.text);
  textView.setText(styledString);
}
 
@Override
public void onBindViewHolder(ClickableViewHolder holder, int position) {

  if (holder instanceof ItemViewHolder) {
    ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
    Gank.GankInfo gankInfo = mGankList.get(position);
    if (position == 0) {
      showCategory(itemViewHolder);
    } else {
      boolean theCategoryOfLastEqualsToThis = mGankList.get(
          position - 1).type.equals(mGankList.get(position).type);
      if (!theCategoryOfLastEqualsToThis) {
        showCategory(itemViewHolder);
      } else {
        hideCategory(itemViewHolder);
      }
    }
    itemViewHolder.category.setText(gankInfo.type);
    SpannableStringBuilder builder = new SpannableStringBuilder(gankInfo.desc).append(
        StringStyleUtils.format(itemViewHolder.gank.getContext(), " (via. " +
            gankInfo.who +
            ")", R.style.ViaTextAppearance));
    CharSequence gankText = builder.subSequence(0, builder.length());

    itemViewHolder.gank.setText(gankText);
    showItemAnim(itemViewHolder.gank, position);
  }

  super.onBindViewHolder(holder, position);
}
 
源代码7 项目: Markdown   文件: TagHandlerImpl.java
@Override
public boolean email(Line line) {
    line = line.get();
    SpannableStringBuilder builder = (SpannableStringBuilder) line.getStyle();
    Matcher matcher = obtain(Tag.EMAIL, builder);
    if (matcher.find()) {
        SpannableStringBuilder sb = (SpannableStringBuilder) builder.subSequence(matcher.start(2), matcher.end(2));
        builder.delete(matcher.start(1), matcher.end(1));
        builder.insert(matcher.start(1), styleBuilder.email(sb));
        email(line);
        return true;
    }
    return false;
}
 
public void testConcatWithSuggestionSpansOnly() {
    SpannableStringBuilder s = new SpannableStringBuilder("test string\ntest string\n"
            + "test string\ntest string\ntest string\ntest string\ntest string\ntest string\n"
            + "test string\ntest string\n");
    final int N = 10;
    for (int i = 0; i < N; ++i) {
        // Put a PARAGRAPH-flagged span that should not be found in the result.
        s.setSpan(new SuggestionSpan(getContext(),
                new String[] {"" + i}, Spanned.SPAN_PARAGRAPH),
                i * 12, i * 12 + 12, Spanned.SPAN_PARAGRAPH);
        // Put a normal suggestion span that should be found in the result.
        s.setSpan(new SuggestionSpan(getContext(), new String[] {"" + i}, 0), i, i * 2, 0);
        // Put a URL span than should not be found in the result.
        s.setSpan(new URLSpan("http://a"), i, i * 2, 0);
    }

    final CharSequence a = s.subSequence(0, 15);
    final CharSequence b = s.subSequence(15, s.length());
    final Spanned result =
            (Spanned)SpannableStringUtils.concatWithNonParagraphSuggestionSpansOnly(a, b);

    Object[] spans = result.getSpans(0, result.length(), SuggestionSpan.class);
    for (int i = 0; i < spans.length; i++) {
        final int flags = result.getSpanFlags(spans[i]);
        assertEquals("Should not find a span with PARAGRAPH flag",
                flags & Spanned.SPAN_PARAGRAPH, 0);
        assertTrue("Should be a SuggestionSpan", spans[i] instanceof SuggestionSpan);
    }
}
 
源代码9 项目: GankDaily   文件: StringStyleUtils.java
public static CharSequence getGankInfoSequence(Context context,Gank mGank) {
    SpannableStringBuilder builder = new SpannableStringBuilder(mGank.desc).append(
            StringStyleUtils.format(context, " (via. " + mGank.who + ")", R.style.ViaTextAppearance));
    return builder.subSequence(0, builder.length());
}