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

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -