java - how to change the color of text partially in android -
i have sentence contains message posted server wow! superb pic #superb #pic #111 #222 enjoyed pic
i want extract hastags
, make them colored , leaving rest of text intact.
i tried following code not working.
private void spannableoperationonhastag() { mpostmessage = edpostmessage.gettext().tostring().trim(); string strprehash = null; string strhashtext = ""; if (mpostmessage.contains("#")) { try { int index = mpostmessage.indexof("#"); strprehash = mpostmessage.substring(0, index); spannablestring spannablestring = new spannablestring(strprehash); string strhashdummy=mpostmessage.substring(index, mpostmessage.length()); int hashcount= stringutils.countmatches(strhashdummy, "#"); // check number of "#" occurrence , run forloop getting number of hastags in string int hasindex=0; (int = 0; <hashcount ; i++) { strhashtext = strhashtext+strhashdummy.substring(hasindex, strhashdummy.indexof(' '))+" "; hasindex =strhashtext.indexof(" "); // updating new space(" ") position in index variable } spannablestring spannablestringblue = new spannablestring(strhashtext); spannablestringblue.setspan(new foregroundcolorspan(publishpostactivity.this.getresources().getcolor(r.color.blue)), 0, strhashtext.length(), spanned.span_inclusive_exclusive); edpostmessage.settext(null); // clearing old string edpostmessage.append(spannablestring); // setting extracted coloured text edpostmessage.append(spannablestringblue); } catch (exception e) { log.d(tag, "validatepostmessage() called " + "e = [" + e + "]"); } } }
i solved problem self . 1 needs can refer code :)
private void spannableoperationonhastag() throws exception{ mpostmessage = edpostmessage.gettext().tostring()+" "; // space spannable operations list<integer> liststartpos = new arraylist<>(); list<integer> listendtpos = new arraylist<>(); if (mpostmessage.contains("#")){ (int = 0; < mpostmessage.length(); i++) { if (mpostmessage.charat(i) == '#') { liststartpos.add(i); log.d(tag, "startindex of # = " + i); } } (int = 0; < liststartpos.size(); i++) { int endindex = mpostmessage.indexof(' ', liststartpos.get(i)); listendtpos.add(endindex); log.d(tag, "endindex of # " + (endindex)); } spannablestring spanned = spannablestring.valueof(mpostmessage); (int = 0; < liststartpos.size(); i++) { spanned = new spannablestring(spanned); spanned.setspan(new foregroundcolorspan(getresources().getcolor(r.color.blue)), liststartpos.get(i), listendtpos.get(i), spanned.span_exclusive_exclusive); log.d(tag, "substring " + mpostmessage.substring(liststartpos.get(i), listendtpos.get(i) + 1)); } mpostmessage.trim(); // removing space. edpostmessage.settext(null); edpostmessage.settext(spanned); } }
Comments
Post a Comment