String iconString = tempIconString.subSequence(1, tempIconString.length() - 1).toString().replace("-", "_"); String fontKey = tempIconString.subSequence(1, 4).toString();
edittext.setText(getSmiledText(this,"your text")); public Spannable getSmiledText(Context context, String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); int index; for (index = 0; index < builder.length(); index++) { for (Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } return builder; }
@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 CharSequence subSequence(int start, int end) { return mSpannableString.subSequence(start, end); }
@Override public String toString(){ int len = mSpannableString.length(); if(len == 0) return "<EMPTY>"; if(len < 70) return mSpannableString.toString(); return mSpannableString.subSequence(0,30).toString() + " ~...~ " + mSpannableString.subSequence(len-30, len - 1).toString(); }
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)); }
/** * format SpannableStringBuilder for _todo syntax or done syntax * * @param ssb the original text * @param isTodo is _todo or done? * @return the formatted text */ public static String formatTodoLine(SpannableStringBuilder ssb, boolean isTodo) { if (isTodo) { return new StringBuilder().append("- [ ] ").append(ssb.subSequence(TextHelper.safePosition("- [ ] ".length(), ssb), TextHelper.safePosition(ssb.length() - 1, ssb))).toString(); } else { return new StringBuilder().append("- [x] ").append(ssb.subSequence(TextHelper.safePosition("- [x] ".length(), ssb), TextHelper.safePosition(ssb.length() - 1, ssb))).toString(); } }
public static Spannable getSmiledText(Context context, String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); int index;for (index = 0; index < builder.length(); index++) { for (Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } return builder; }
private static final HashMap<String, Integer> emoticons = new HashMap(); static { emoticons.put(":*", R.drawable.emo_im_kiss); emoticons.put(":-D", R.drawable.emo_im_glad); emoticons.put(":)", R.drawable.emo_im_happy); emoticons.put(":-(", R.drawable.emo_im_sad); ... } public static Spannable getSmiledText(Context context, String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); int index; for (index = 0; index < builder.length(); index++) { for (Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } return builder; }
// Get image for each text smiles public static Spannable getSmiledText(Context context, String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); int index; for (index = 0; index < builder.length(); index++) { for (Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } return builder; }
public static Spannable getSmiledText(Context context, String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); int index; for (index = 0; index < builder.length(); index++) { for (Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } return builder; } public static final HashMap<String, Integer> emoticons = new HashMap<String, Integer>(); static { // emoticons.put("cup:", R.drawable.cup); emoticons.put("glass", R.drawable.glasses); emoticons.put("bike", R.drawable.bike); emoticons.put("bottle", R.drawable.bottle); }
Textview textview = (Textview)findViewById(R.id.textview); textview.setText(getSmiledText(text.toString())); public Spannable getSmiledText(String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); if (emoticons.size() > 0) { int index; for (index = 0; index < builder.length(); index++) { if (Character.toString(builder.charAt(index)).equals(":")) { for (Map.Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(getContext(), entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } } } return builder; }
// try this textview.setText(getSmiledText(text.toString())); public Spannable getSmiledText(String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); if (emoticons.size() > 0) { int index; for (index = 0; index < builder.length(); index++) { if (Character.toString(builder.charAt(index)).equals(":")) { for (Map.Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(getContext(), entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } } } return builder; }
textview.setText(getSmiledText(text.toString())); public Spannable getSmiledText(String text) { SpannableStringBuilder builder = new SpannableStringBuilder(text); if (emoticons.size() > 0) { int index; for (index = 0; index < builder.length(); index++) { if (Character.toString(builder.charAt(index)).equals(":")) { for (Map.Entry<String, Integer> entry : emoticons.entrySet()) { int length = entry.getKey().length(); if (index + length > builder.length()) continue; if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { builder.setSpan(new ImageSpan(getContext(), entry.getValue()), index, index + length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); index += length - 1; break; } } } } } return builder; }
int flags = builder.getSpanFlags(span); CharSequence linkText = builder.subSequence(start, end); if (linkText.length() > MAX_LINK_LENGTH) {
private SpannableStringBuilder parseByLine(ISpecialChain lineChain, SpannableStringBuilder content) { String text = content.toString(); String[] lines = text.split(NEWLINE); final int linesCount = lines.length; SpannableStringBuilder[] ssbLines = new SpannableStringBuilder[linesCount]; SpannableStringBuilder ssb = new SpannableStringBuilder(); final int newLineLength = NEWLINE.length(); int index = 0; for (int line = 0; line < linesCount; line++) { int lineLength = lines[line].length(); ssbLines[line] = (SpannableStringBuilder) content.subSequence(TextHelper.safePosition(index, content), TextHelper.safePosition(index + lineLength, content)); lineChain.handleSyntax(ssbLines[line], line); index += lineLength; if (line < linesCount - 1) { ssbLines[line].append(NEWLINE); index += newLineLength; } ssb.append(ssbLines[line]); } return ssb; }
@Override protected void onBindViewHolder( @NonNull final ViewHolder holder, @NonNull final GanHuoData recently) { SpannableStringBuilder builder = new SpannableStringBuilder(); builder.append( SpannableStringUtils.format(holder.tv_title.getContext(), "[" + DateUtils.friendlyTime(recently.getPublishedAt().replace('T', ' ').replace('Z', ' ')) + "]", R.style.ByTextAppearance)); builder.append(recently.getDesc()); builder.append( SpannableStringUtils.format(holder.tv_title.getContext(), " [via " + recently.getWho() + "]", R.style.ByTextAppearance)); holder.tv_title.setText(builder.subSequence(0, builder.length())); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { WebViewActivity.start(holder.itemView.getContext(), recently.getDesc(), recently.getUrl()); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { DialogUtils.showActionDialog(v.getContext(), v , new CollectTable(recently.getDesc(), recently.getUrl(), recently.getType())); return true; } }); }
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)); } }
public class LinkShortener { public static final int MAX_LINK_LENGTH = 20; public static CharSequence shortenLinks(String text) { return shortenLinks(text, Linkify.ALL); } public static CharSequence shortenLinks(String text, int linkMask) { SpannableStringBuilder builder = new SpannableStringBuilder(text); Linkify.addLinks(builder, linkMask); URLSpan[] spans = builder.getSpans(0, builder.length(), URLSpan.class); for (URLSpan span : spans) { int start = builder.getSpanStart(span); int end = builder.getSpanEnd(span); int flags = builder.getSpanFlags(span); CharSequence linkText = builder.subSequence(start, end); if (linkText.length() > MAX_LINK_LENGTH) { linkText = linkText.subSequence(0, 20) + "…"; builder.replace(start, end, linkText); builder.removeSpan(span); builder.setSpan(span, start, start+linkText.length(), flags); } } return builder; } }
public Spanned parseDribbbleHtml(String input, ColorStateList linkTextColor) { SpannableStringBuilder ssb = parseHtml(input, linkTextColor); LinkSpan[] linkSpans = ssb.getSpans(0, ssb.length(), LinkSpan.class); for (LinkSpan urlSpan : linkSpans) { int start = ssb.getSpanStart(urlSpan); if (ssb.subSequence(start, start + 1).toString().equals("@")) { int end = ssb.getSpanEnd(urlSpan); ssb.removeSpan(urlSpan); UserSpan userSpan = new UserSpan(urlSpan.getURL(), linkTextColor) { @Override public void onClick(long userId) { if (onUserSelectedListener != null) { onUserSelectedListener.onUserSelected(userId); } } }; ssb.setSpan(userSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } return ssb; }