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

android.text.Spannable的实例源码

项目:Rotatable-scalable-Font    文件WidgetTextContent.java   
private SpannableString applyLetterSpacing(String text) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < text.length(); i++) {
        builder.append(text.charat(i));
        if (i + 1 < text.length() && !isEmojiCharacter(text.charat(i))) {//avoid adding the blank code between the emoji code
            builder.append("\u00A0");
        }
    }
    SpannableString finalText = new SpannableString(builder.toString());
    if (builder.toString().length() > 1) {
        for (int i = 1; i < builder.toString().length(); i += 2) {
            if (builder.toString().tochararray()[i] == 160) {//avoid breaking emoji code,u00A0 is text space
                finalText.setSpan(new ScaleXSpan((mLetterSpace + 1) / 10),i,i + 1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
    }
    return finalText;
}
项目:OSchina_resources_android    文件TweetQueueAdapter.java   
@SuppressWarnings("unused")
public void bind(int position,TweetPublishModel model,RequestManager loader) {
    itemView.setTag(model);

    Context context = itemView.getContext();

    Spannable spannable = TweetParser.getInstance().parse(context,model.getContent());
    mTitle.setText(spannable);
    mTitle.setMovementMethod(LinkMovementMethod.getInstance());
    mTitle.setFocusable(false);
    mTitle.setdispatchToParent(true);
    mTitle.setLongClickable(false);

    mLog.setText(String.format("Error:%s.",model.getErrorString() == null ? "null" : model.getErrorString()));
    mDate.setText(FORMAT.format(new Date(model.getDate())));
}
项目:RLibrary    文件RExTextView.java   
/**
 * 检查当前位置是否命中在spannable上,如果是,返回spannable的start position
 */
private int findStartPosition(Spannable spannable,int startWidthPosition) {
    CharacterStyle[] oldSpans = spannable.getSpans(startWidthPosition,spannable.length(),CharacterStyle.class);
    int position = startWidthPosition;
    for (CharacterStyle oldSpan : oldSpans) {
        int spanStart = spannable.getSpanStart(oldSpan);
        int spanEnd = spannable.getSpanEnd(oldSpan);

        if (spanStart <= startWidthPosition && spanEnd > startWidthPosition) {
            position = spanStart;
        }

        if (spanStart >= startWidthPosition) {
            spannable.removeSpan(oldSpan);
        }
    }
    //L.e("call: findStartPosition([spannable,startWidthPosition]) " + startWidthPosition + " -> " + position);
    return position;
}
项目:QMUI_Android    文件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,off,ITouchableSpan.class);
    ITouchableSpan touchedSpan = null;
    if (link.length > 0) {
        touchedSpan = link[0];
    }
    return touchedSpan;
}
项目:qmui    文件QMUILinkTouchDecorHelper.java   
public ITouchableSpan getpressedSpan(TextView textView,ITouchableSpan.class);
    ITouchableSpan touchedSpan = null;
    if (link.length > 0) {
        touchedSpan = link[0];
    }
    return touchedSpan;
}
项目:GitHub    文件MyURLSpan.java   
/**
 * @param context
 * @param spannable
 * @param title
 * @return
 */
public static SpannableStringBuilder getText(Activity context,String title) {
    if (spannable == null || spannable.length() <= 0) {
        Log.e(TAG,"getText  spannable == null || spannable.length() <= 0 >> return new SpannableStringBuilder();");
        return new SpannableStringBuilder();
    }

    SpannableStringBuilder builder = new SpannableStringBuilder(spannable);
    builder.clearSpans();// should clear old spans
    URLSpan[] urls = spannable.getSpans(0,URLSpan.class);
    if (urls != null) {
        for (URLSpan urlSpan : urls) {
            if (urlSpan != null) {
                MyURLSpan myURLSpan = new MyURLSpan(context,urlSpan.getURL(),title);
                builder.setSpan(myURLSpan,spannable.getSpanStart(urlSpan),spannable
                        .getSpanEnd(urlSpan),Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
            }
        }
    }

    return builder;
}
项目:GitHub    文件BookMarkAdapter.java   
@Override
public void convert(EasyLVHolder holder,int position,BookMark item) {
    TextView tv = holder.getView(R.id.tvMarkItem);

    SpannableString spanText = new SpannableString((position + 1) + ". " + item.title + ": ");
    spanText.setSpan(new ForegroundColorSpan(ContextCompat.getColor(mContext,R.color.light_coffee)),spanText.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

    tv.setText(spanText);

    if (item.desc != null) {
        tv.append(item.desc
                .replaceAll(" ","")
                .replaceAll(" ","")
                .replaceAll("\n",""));
    }

}
项目:okwallet    文件WalletUtils.java   
public static Editable formatHash(@Nullable final String prefix,final String address,final int groupSize,final int linesize,final char groupSeparator) {
    final SpannableStringBuilder builder = prefix != null ? new SpannableStringBuilder(prefix)
            : new SpannableStringBuilder();

    final int len = address.length();
    for (int i = 0; i < len; i += groupSize) {
        final int end = i + groupSize;
        final String part = address.substring(i,end < len ? end : len);

        builder.append(part);
        builder.setSpan(new TypefaceSpan("monospace"),builder.length() - part.length(),builder.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        if (end < len) {
            final boolean endOfLine = linesize > 0 && end % linesize == 0;
            builder.append(endOfLine ? '\n' : groupSeparator);
        }
    }

    return builder;
}
项目: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,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,buffer,event);
    return false;
}
项目:Slide-RSS    文件SpoilerRobotoTextView.java   
/**
 * Replaces the blue line produced by <blockquote>s with something more visible
 *
 * @param spannable parsed comment text #fromHtml
 */
private void replaceQuoteSpans(Spannable spannable) {
    QuoteSpan[] quoteSpans = spannable.getSpans(0,QuoteSpan.class);

    for (QuoteSpan quoteSpan : quoteSpans) {
        final int start = spannable.getSpanStart(quoteSpan);
        final int end = spannable.getSpanEnd(quoteSpan);
        final int flags = spannable.getSpanFlags(quoteSpan);

        spannable.removeSpan(quoteSpan);

        //If the theme is Light or Sepia,use a darker blue; otherwise,use a lighter blue
        final int barColor =
                (SettingValues.currentTheme == 1 || SettingValues.currentTheme == 5)
                        ? ContextCompat.getColor(getContext(),R.color.md_blue_600)
                        : ContextCompat.getColor(getContext(),R.color.md_blue_400);

        final int BAR_WIDTH = 4;
        final int GAP = 5;

        spannable.setSpan(new CustomQuoteSpan(Color.TRANSPARENT,//background color
                        barColor,//bar color
                        BAR_WIDTH,//bar width
                        GAP),//bar + text gap
                start,end,flags);
    }
}
项目:EmoticonGIFKeyboard    文件EmoticonUtils.java   
/**
 * Replace the system emoticons with the provided custom emoticons drawable. This will find the
 * unicodes with supported emoticons in the provided text and  will replace the emoticons with
 * appropriate images.
 *
 * @param context          instance of caller.
 * @param text             Text to replace
 * @param emoticonProvider {@link EmoticonProvider} for emoticons images
 * @param emoticonSize     Size of the emoticons in dp
 * @return Modified text.
 */
public static void replaceWithImages(@NonNull final Context context,@NonNull final Spannable text,@NonNull final EmoticonProvider emoticonProvider,final int emoticonSize) {

    final EmoticonSpan[] existingSpans = text.getSpans(0,text.length(),EmoticonSpan.class);
    final ArrayList<Integer> existingSpanPositions = new ArrayList<>(existingSpans.length);
    for (EmoticonSpan existingSpan : existingSpans) {
        existingSpanPositions.add(text.getSpanStart(existingSpan));
    }

    //Get location and unicode of all emoticons.
    final List<EmoticonRange> findAllEmojis = findAllEmoticons(context,text,emoticonProvider);

    //Replace all the emoticons with their relatives.
    for (int i = 0; i < findAllEmojis.size(); i++) {
        final EmoticonRange location = findAllEmojis.get(i);
        if (!existingSpanPositions.contains(location.mStartPos)) {
            text.setSpan(new EmoticonSpan(context,location.mEmoticon.getIcon(),emoticonSize),location.mStartPos,location.mEndPos,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
}
项目:IslamicLibraryAndroid    文件SearchResult.java   
public CharSequence getformatedSearchSnippet() {
    //Todo implement improved snippet function
    String CleanedSearchString = " " + arabicUtilities.cleanTextForSearchingWthStingBuilder(searchString) + " ";
    StringBuilder cleanedUnformattedPage = new StringBuilder(arabicUtilities.cleanTextForSearchingWthStingBuilder(unformatedPage));
    int firstMatchStart = cleanedUnformattedPage.indexOf(CleanedSearchString);
    cleanedUnformattedPage.delete(0,Math.max(firstMatchStart - 100,0));
    cleanedUnformattedPage.delete(
            Math.min(firstMatchStart + CleanedSearchString.length() + 100,cleanedUnformattedPage.length()),cleanedUnformattedPage.length());
    cleanedUnformattedPage.insert(0,"...");
    cleanedUnformattedPage.append("...");

    Spannable snippet = SpannableString.
            valueOf(cleanedUnformattedPage.toString());
    int index = TextUtils.indexOf(snippet,CleanedSearchString);
    while (index >= 0) {

        snippet.setSpan(new BackgroundColorSpan(0xFF8B008B),index,index
                + CleanedSearchString.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        index = TextUtils.indexOf(snippet,CleanedSearchString,index + CleanedSearchString.length());
    }

    return snippet;
}
项目:ultrasonic    文件SelectPlaylistActivity.java   
private void displayPlaylistInfo(final Playlist playlist)
{
    final TextView textView = new TextView(this);
    textView.setPadding(5,5,5);

    final Spannable message = new SpannableString("Owner: " + playlist.getowner() + "\nComments: " +
            ((playlist.getComment() == null) ? "" : playlist.getComment()) +
            "\nSong Count: " + playlist.getSongCount() +
            ((playlist.getPublic() == null) ? "" : ("\nPublic: " + playlist.getPublic()) + ((playlist.getCreated() == null) ? "" : ("\nCreation Date: " + playlist.getCreated().replace('T',' ')))));

    Linkify.addLinks(message,Linkify.WEB_URLS);
    textView.setText(message);
    textView.setMovementMethod(LinkMovementMethod.getInstance());

    new AlertDialog.Builder(this).setTitle(playlist.getName()).setCancelable(true).setIcon(android.R.drawable.ic_dialog_info).setView(textView).show();
}
项目:markor    文件Highlighter.java   
/**
 * Create Span for matches in paragraph's. Note that this will highlight the full matched pattern
 * (including optionals) if no group parameters are given.
 *
 * @param editable      Text editable
 * @param pattern       The pattern to match
 * @param creator       A ParcelableSpanCreator for ParcelableSpan
 * @param groupsToMatch (optional) groups to be matched,indexes start at 1.
 */
protected void createSpanForMatchesP(final Editable editable,final Pattern pattern,final ParagraphStyleCreator creator,int... groupsToMatch) {
    if (groupsToMatch == null || groupsToMatch.length < 1) {
        groupsToMatch = new int[]{0};
    }
    int i = 0;
    for (Matcher m = pattern.matcher(editable); m.find(); i++) {
        ParagraphStyle span = creator.create(m,i);
        if (span != null) {
            for (int g : groupsToMatch) {
                if (g == 0 || g <= m.groupCount()) {
                    editable.setSpan(span,m.start(g),m.end(g),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                }
            }
        }
    }
}
项目:revolution-irc    文件SpannableStringHelper.java   
public static void setAndMergeSpans(Spannable text,Object what,int start,int end,int flags) {
    Object[] spans = text.getSpans(Math.max(start - 1,0),Math.min(end + 1,what.getClass());
    for (Object span : spans) {
        if (!areSpansEqual(span,what))
            continue;
        int sFlags = text.getSpanFlags(span);
        if ((sFlags & Spanned.SPAN_COMPOSING) != 0)
            continue;

        int sstart = text.getSpanStart(span);
        int sEnd = text.getSpanEnd(span);
        if (sEnd < start || sstart > end)
            continue;
        text.removeSpan(span);
        if (sstart < start)
            start = sstart;
        if (sEnd > end)
            end = sEnd;
    }
    text.setSpan(what,start,flags);
}
项目:qmui    文件QMUILinkify.java   
private static void gatherPhoneLinks(ArrayList<LinkSpec> links,Spannable s,Pattern pattern,Pattern[] excepts,String[] schemes,MatchFilter matchFilter,TransformFilter transformFilter) {
    Matcher m = pattern.matcher(s);

    while (m.find()) {
        if (isInExcepts(m.group(),excepts)) {
            continue;
        }

        int start = m.start();
        int end = m.end();

        if (matchFilter == null || matchFilter.acceptMatch(s,end)) {
            LinkSpec spec = new LinkSpec();
            String url = makeUrl(m.group(0),schemes,m,transformFilter);

            spec.url = url;
            spec.start = start;
            spec.end = end;

            links.add(spec);
        }
    }
}
项目:GifEmoticon    文件EmoticonUtils.java   
static void replaceWithImages(@NonNull final Context context,EmoticonSpan.class);
    final ArrayList<Integer> existingSpanPositions = new ArrayList<>(existingSpans.length);
    for (EmoticonSpan existingSpan : existingSpans) {
        existingSpanPositions.add(text.getSpanStart(existingSpan));
    }

    final List<EmoticonRange> findAllEmojis = findAllEmoticons(text,emoticonProvider);

    for (int i = 0; i < findAllEmojis.size(); i++) {
        final EmoticonRange location = findAllEmojis.get(i);
        if (!existingSpanPositions.contains(location.mStartPos)) {
            text.setSpan(EmoticonSpan.create(context,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
}
项目:ShangHanLun    文件ShowFragment.java   
public SpannableStringBuilder spannerbleTitleForHeaderInSection(
        ATableView tableView,int section) {
    HH2SectionData sd = data.get(section);
    String text = sd.getHeader();
    SpannableStringBuilder builder = new SpannableStringBuilder(text);
    builder.setSpan(new ForegroundColorSpan(Color.BLUE),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    if (text.contains("$")) {
        int index = text.indexOf("$") + 1;
        builder.setSpan(new ForegroundColorSpan(Color.RED),SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
        builder.setSpan(new RelativeSizeSpan(0.55f),SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
        builder.replace(index - 1,"\n");
    }

    return builder;
}
项目:Sega    文件SearchAdapter.java   
@Override
public void onBindViewHolder(ResultViewHolder viewHolder,int position) {
    SearchItem item = mResultList.get(position);

    viewHolder.icon_left.setimageResource(item.get_icon());
    viewHolder.icon_left.setColorFilter(SearchView.getIconColor(),PorterDuff.Mode.SRC_IN);
    viewHolder.text.setTypeface((Typeface.create(SearchView.getTextFont(),SearchView.getTextStyle())));
    viewHolder.text.setTextColor(SearchView.getTextColor());

    String itemText = item.get_text().toString();
    String itemTextLower = itemText.toLowerCase(Locale.getDefault());

    if (itemTextLower.contains(key) && !key.isEmpty()) {
        SpannableString s = new SpannableString(itemText);
        s.setSpan(new ForegroundColorSpan(SearchView.getTextHighlightColor()),itemTextLower.indexOf(key),itemTextLower.indexOf(key) + key.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        viewHolder.text.setText(s,TextView.BufferType.SPANNABLE);
    } else {
        viewHolder.text.setText(item.get_text());
    }
}
项目:MultiContactPicker    文件MultiContactPickerAdapter.java   
private void highlightTerm(TextView tv,String query,String originalString){
    if (query != null && !query.isEmpty()) {
        int startPos = originalString.toLowerCase().indexOf(query.toLowerCase());
        int endPos = startPos + query.length();
        if (startPos != -1) {
            Spannable spannable = new SpannableString(originalString);
            ColorStateList blackColor = new ColorStateList(new int[][]{new int[]{}},new int[]{Color.BLACK});
            TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null,Typeface.BOLD,-1,blackColor,null);
            spannable.setSpan(highlightSpan,startPos,endPos,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            tv.setText(spannable);
        } else {
            tv.setText(originalString);
        }
    } else {
        tv.setText(originalString);
    }
}
项目:xwallet    文件WalletUtils.java   
public static Editable formatHash(@Nullable final String prefix,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        if (end < len) {
            final boolean endOfLine = linesize > 0 && end % linesize == 0;
            builder.append(endOfLine ? '\n' : groupSeparator);
        }
    }

    return builder;
}
项目:Demos    文件TouchLinkMovementMethod.java   
@Override
public boolean onTouchEvent(TextView widget,MotionEvent event) {
    int action = event.getAction();

    if (action == MotionEvent.ACTION_DOWN) {
        int x = (int) event.getX();
        int y = (int) event.getY();

        x -= widget.getTotalPaddingLeft();
        y -= widget.getTotalPaddingTop();
        x += widget.getScrollX();
        y += widget.getScrollY();

        Layout layout = widget.getLayout();
        int line = layout.getLineForVertical(y);
        int off = layout.getoffsetForHorizontal(line,x);

        ClickableSpan[] link = buffer.getSpans(off,ClickableSpan.class);
        if (link.length != 0) {
            link[0].onClick(widget);
            return true;
        } else {
            Selection.removeSelection(buffer);
        }
    }

    return super.onTouchEvent(widget,event);
}
项目:minion-android    文件IniSyntaxHighlighter.java   
private void applySpan(Spannable spannable,@ColorInt int color,int end) {
    spannable.setSpan(
            new ForegroundColorSpan(color),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
项目:sealtalk-android-master    文件TestMessageProvider.java   
@Override
public Spannable getContentSummary(TestMessage data) {
    if (data == null)
        return null;

    String content = data.getContent();
    if (content != null) {
        if (content.length() > 100) {
            content = content.substring(0,100);
        }
        return new SpannableString(AndroidEmoji.ensure(content));
    }
    return null;
}
项目:simpledialogFragments    文件AdvancedAdapter.java   
/**
 * Highlights everything that matched the current filter (if any) in text
 *
 * @param text the text to highlight
 * @param context a context to get the default highlight color from
 * @return a spannable string
 */
protected Spannable highlight(String text,Context context) {
    if (mDefaultHighlightColor == null){
        TypedArray array = context.obtainStyledAttributes(new int[]{
                android.R.attr.textColorHighlight});
        mDefaultHighlightColor = array.getColor(0,0x6633B5E5);
        array.recycle();
    }
    return highlight(text,mDefaultHighlightColor);
}
项目:KingTV    文件ChatFragment.java   
@Override
public void initUI() {


    SpannableStringBuilder ssb = new SpannableStringBuilder();
    //系统通知图片
    ImageSpan imageSpan = new ImageSpan(context,R.drawable.img_dm_xttz);
    SpannableString spannableString = new SpannableString("tips");
    spannableString.setSpan(imageSpan,spannableString.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    ssb.append(spannableString);
    //系统通知内容
    ssb.append(getText(R.string.tips_notice_desc));
    tvTips.setText(ssb);
}
项目:q-mail    文件ICalendarHelper.java   
@VisibleForTesting
static CharSequence toFriendly(Organizer organizer,Contacts contacts,boolean showCorrespondentNames,boolean changeContactNameColor,int contactNameColor) {
    if (organizer == null) {
        return null;
    }
    if (!showCorrespondentNames) {
        return organizer.getEmail();
    } else if (contacts != null) {
        final String name = contacts.getNameForAddress(organizer.getEmail());
        // Todo: The results should probably be cached for performance reasons.
        if (name != null) {
            if (changeContactNameColor) {
                final SpannableString coloredname = new SpannableString(name);
                coloredname.setSpan(new ForegroundColorSpan(contactNameColor),coloredname.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                );
                return coloredname;
            } else {
                return name;
            }
        }
    }

    return (!TextUtils.isEmpty(organizer.getCommonName())) ? organizer.getCommonName() : organizer.getEmail();
}
项目:GCSApp    文件EaseSmileUtils.java   
/**
 * replace existing spannable with smiles
 * @param context
 * @param spannable
 * @return
 */
public static boolean addSmiles(Context context,Spannable spannable) {
    boolean hasChanges = false;
    for (Entry<Pattern,Object> entry : emoticons.entrySet()) {
        Matcher matcher = entry.getKey().matcher(spannable);
        while (matcher.find()) {
            boolean set = true;
            for (ImageSpan span : spannable.getSpans(matcher.start(),matcher.end(),ImageSpan.class))
                if (spannable.getSpanStart(span) >= matcher.start()
                        && spannable.getSpanEnd(span) <= matcher.end())
                    spannable.removeSpan(span);
                else {
                    set = false;
                    break;
                }
            if (set) {
                hasChanges = true;
                Object value = entry.getValue();
                if(value instanceof String && !((String) value).startsWith("http")){
                    File file = new File((String) value);
                    if(!file.exists() || file.isDirectory()){
                        return false;
                    }
                    spannable.setSpan(new ImageSpan(context,Uri.fromFile(file)),matcher.start(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                }else{
                    spannable.setSpan(new ImageSpan(context,(Integer)value),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                }
            }
        }
    }

    return hasChanges;
}
项目:UltimateRecyclerView    文件StickyAdapter.java   
private void setData(SuperViewHolder holder,StockEntity.StockInfo item) {
    final String stockNameAndCode = item.stock_name + "\n" + item.stock_code;
    SpannableStringBuilder ssb = new SpannableStringBuilder(stockNameAndCode);
    ssb.setSpan(new ForegroundColorSpan(Color.parseColor("#a4a4a7")),item.stock_name.length(),stockNameAndCode.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    ssb.setSpan(new AbsoluteSizeSpan(dip2px(holder.itemView.getContext(),13)),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    ((TextView) holder.getView(R.id.tv_stock_name_code)).setText(ssb);
    ((TextView) holder.getView(R.id.tv_current_price)).setText(item.current_price);
    ((TextView) holder.getView(R.id.tv_rate)).setText(item.rate < 0 ? String.format("%.2f",item.rate) : ("+" + String.format("%.2f",item.rate)) + "%");
}
项目:chromium-for-android-56-debug-video    文件AnswerTextBuilder.java   
/**
 * Append the styled text in textField to the supplied builder.
 *
 * @param builder The builder to append the text to.
 * @param textField The text field (with text and type) to append.
 * @param maxTextHeightSp The height in SP of the largest text field in the entire line. Used to
 *                        top-align text when specified.
 * @param metrics Font metrics which will be used to properly size and layout images and top-
 *                aligned text.
 * @param density Screen density which will be used to properly size and layout images and top-
 *                aligned text.
*/
private static void appendAndStyleText(
        SpannableStringBuilder builder,SuggestionAnswer.TextField textField,int maxTextHeightSp,Paint.FontMetrics metrics,float density) {
    String text = textField.getText();
    int type = textField.getType();

    // Unescape HTML entities (e.g. "&quot;","&gt;").
    text = Html.fromHtml(text).toString();

    // Append as HTML (answer responses contain simple markup).
    int start = builder.length();
    builder.append(Html.fromHtml(text));
    int end = builder.length();

    // Apply styles according to the type.
    AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(getAnswerTextSizeSp(type),true);
    builder.setSpan(sizeSpan,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    ForegroundColorSpan colorSpan = new ForegroundColorSpan(getAnswerTextColor(type));
    builder.setSpan(colorSpan,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    if (type == ANSWERS_TOP_ALIGNED_TEXT_TYPE) {
        TopAlignedSpan topAlignedSpan =
                new TopAlignedSpan(
                        ANSWERS_TOP_ALIGNED_TEXT_SIZE_SP,maxTextHeightSp,metrics,density);
        builder.setSpan(topAlignedSpan,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}
项目:ShangHanLun    文件FangFragment.java   
public SpannableStringBuilder spannerbleTitleForHeaderInSection(
        ATableView tableView,int section) {
    SpannableStringBuilder builder = super
            .spannerbleTitleForHeaderInSection(tableView,section);
    SpannableString append = new SpannableString(String.format(
            "   凡%d方",data.get(section).getData().size()));
    append.setSpan(new ForegroundColorSpan(Color.BLUE),append.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    builder.append(append);
    return builder;
}
项目:GCSApp    文件EaseChatRowRecSendMoney.java   
@Override
public void onSetUpView() {
    EMTextMessageBody txtBody = (EMTextMessageBody) message.getBody();
    Spannable span = EaseSmileUtils.getSmiledText(context,txtBody.getMessage());
    String money = message.getStringAttribute("transferMoney ","");
    // 设置内容
    if (StringUtils.isNotEmpty(money)) {
        contentView.setText(money);
    } else {
        contentView.setText("0.0");
    }

    handleTextMessage();
}
项目:Veggietizer    文件Utility.java   
/**
 * Sets the action bar title using the specified font.
 *
 * @param font The font to use.
 * @param title The title to set.
 */
@SuppressWarnings("SameParameterValue")
public static void styleActionBar(ActionBar actionBar,FontManager.Font font,String title) {
    SpannableString actionBarTitle = new SpannableString(title);

    // ActionBar font
    actionBarTitle.setSpan(new TypefaceSpan(font),actionBarTitle.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    actionBar.setTitle(actionBarTitle);
}
项目:ShangHanLun    文件Helper.java   
public static void renderItemNumber(SpannableStringBuilder builder) {
    String string = builder.toString();
    if (!string.contains("、")
            || !isNumeric(string.substring(0,string.indexOf("、")))) {
        return;
    }
    ForegroundColorSpan numSpan = new ForegroundColorSpan(Color.BLUE);
    builder.setSpan(numSpan,string.indexOf("、"),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
项目:AndroidSnooper    文件HttpCallFragment.java   
@Override
public void removeOldHighlightedSpans() {
  Spannable spannableString = (Spannable) payloadTextView.getText();
  BackgroundColorSpan[] backgroundSpans = spannableString.getSpans(0,BackgroundColorSpan.class);
  for (BackgroundColorSpan span : backgroundSpans) {
    spannableString.removeSpan(span);
  }
}
项目:QMark    文件EditSourcelistadapter.java   
@Override
public void bind(int position,EditSourceListBean data) {
    mFB.display(mImgBg,data.imgBgUrl);
    mFB.display(mImgCatgy,data.ImgCatgyUrl);
    mTextLeft.setText(data.textLeft);
    Resources resources = getView().getResources();
    SpannableStringBuilder spans = new SpannableStringBuilder(resources.getString(R.string.i_m_category_text_sign_count,data.textSignSize));
    spans.setSpan(new ForegroundColorSpan(resources.getColor(R.color.text_title_orange)),2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spans.setSpan(new ForegroundColorSpan(resources.getColor(R.color.text_title_orange)),spans.length() - 3,spans.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    mTextSignSize.setText(spans);
}
项目:Phoenix-for-VK    文件FeedbackViewBinder.java   
/**
 * Настройка отображения уведомления типа "reply_topic"
 *
 * @param notification уведомление
 * @param holder       контейнер в елементами интерфейса
 */
public void configReplyTopicFeedback(ReplyCommentFeedback notification,FeedbackAdapter.CommentHolder holder) {
    Topic topic = (Topic) notification.getCommentsOf();

    Comment Feedback = notification.getFeedbackComment();

    Spannable FeedBackText = OwnerLinkSpanFactory.withSpans(Feedback.getText(),true,mLinkActionAdapter);

    holder.cOwnerText.setText(FeedBackText);
    holder.cOwnerText.setVisibility(TextUtils.isEmpty(FeedBackText) ? View.GONE : View.VISIBLE);
    AttachmentsHolder containers = AttachmentsHolder.forFeedback(holder.vAttachmentsRoot);
    attachmentsViewBinder.displayAttachments(Feedback.getAttachments(),containers,true);

    String action = getDateFromUnixTime(Feedback.getDate());
    action = action + SPACE + context.getString(R.string.in_reply_to_your_message_in_topic);

    Link parentLink = Link.startOf(action.length());
    action = action + SPACE + topic.getTitle();
    parentLink.end(action.length());

    Spannable spannable = Spannable.Factory.getInstance().newSpannable(action);
    showAsLink(spannable,parentLink);

    holder.cOwnerName.setText(Feedback.getFullAuthorName());
    holder.cOwnerTime.setText(spannable,TextView.BufferType.SPANNABLE);

    holder.cChangable.setVisibility(View.GONE);
    PicassoInstance.with()
            .load(Feedback.getMaxAuthorAvaUrl())
            .tag(Constants.PICASSO_TAG)
            .transform(transformation)
            .into(holder.cOwnerAvatar);

    holder.ivRightAttachment.setVisibility(View.GONE);
    solveOwnerOpenByAvatar(holder.cOwnerAvatar,Feedback.getFromId());

    configReply(notification.getReply(),holder);
}
项目:Phoenix-for-VK    文件FeedbackViewBinder.java   
/**
 * Настройка отображения уведомления типа "reply_comment_photo"
 *
 * @param notification уведомление
 * @param holder       контейнер в елементами интерфейса
 */
public void configReplyCommentPhotoFeedback(ReplyCommentFeedback notification,FeedbackAdapter.CommentHolder holder) {
    Comment parent = notification.getownComment();
    Comment Feedback = notification.getFeedbackComment();

    setupAttachmentViewWithPhoto((Photo) notification.getCommentsOf(),holder.ivRightAttachment);

    String FeedBackText = OwnerLinkSpanFactory.getTextWithCollapSEOwnerLinks(Feedback.getText());

    String action = getDateFromUnixTime(Feedback.getDate());
    action = action + SPACE + context.getString(R.string.in_reply_to_your_comment);

    String parentText;
    if (TextUtils.isEmpty(parent.getText())) {
        parentText = context.getString(R.string.from_date,getDateFromUnixTime(parent.getDate()));
    } else {
        parentText = reduce(OwnerLinkSpanFactory.getTextWithCollapSEOwnerLinks(parent.getText()));
    }

    Link parentLink = Link.startOf(action.length());
    action = action + SPACE + parentText;
    parentLink.end(action.length());

    Spannable spannable = Spannable.Factory.getInstance().newSpannable(action);
    showAsLink(spannable,parentLink);

    holder.cOwnerName.setText(Feedback.getFullAuthorName());
    holder.cOwnerText.setText(FeedBackText);
    holder.cOwnerText.setVisibility(TextUtils.isEmpty(FeedBackText) ? View.GONE : View.VISIBLE);
    holder.cOwnerTime.setText(spannable,TextView.BufferType.SPANNABLE);
    holder.cChangable.setVisibility(View.GONE);
    AttachmentsHolder containers = AttachmentsHolder.forFeedback(holder.vAttachmentsRoot);
    attachmentsViewBinder.displayAttachments(Feedback.getAttachments(),true);

    showUserAvaTaronImageView(Feedback.getMaxAuthorAvaUrl(),holder.cOwnerAvatar);
    solveOwnerOpenByAvatar(holder.cOwnerAvatar,holder);
}
项目:javaide    文件XmlCommentHighlighter.java   
@Override
public void highlight(@NonNull Editable allText,@NonNull CharSequence textToHighlight,int start) {
    mCommentRegion.clear();
    for (Matcher m = XML_COMMENTS.matcher(textToHighlight); m.find(); ) {
        allText.setSpan(new ForegroundColorSpan(codeTheme.getCommentColor()),start + m.start(),start + m.end(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        mCommentRegion.add(new Pair<>(start + m.start(),start + m.end()));
    }
}
项目:Espresso    文件CompanyDetailFragment.java   
@Override
public void setCompanyTel(String tel) {
    this.tel = tel;
    String companyTel = getString(R.string.phone_number) + "\n" + tel;
    Spannable spannable = new SpannableStringBuilder(companyTel);
    spannable.setSpan(new StyleSpan(Typeface.BOLD),companyTel.length() - tel.length() - 1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    spannable.setSpan(new URLSpan(tel),companyTel.length() - tel.length(),companyTel.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    textViewTel.setText(spannable);
}

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