Skip to main content

Highlighting Text Color using Html.fromHtml() in Android?



I am developing an application in which there will be a search screen where user can search for specific keywords and that keyword should be highlighted. I have found Html.fromHtml method.





But I will like to know whether its the proper way of doing it or not.





Please let me know your views on this.





Regards Sunil


Comments

  1. Or far simpler than dealing with Spannables manually, since you didn't say that you want the background highlighted, just the text:

    String styledText = "This is <font color='red'>simple</font>.";
    textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);

    ReplyDelete
  2. This can be achieved using a Spannable String. You will need to import the following

    import android.text.SpannableString;
    import android.text.style.BackgroundColorSpan;
    import android.text.style.StyleSpan;


    And then you can change the background of the text using something like the following:

    TextView text = (TextView) findViewById(R.id.text_login);
    text.setText("");
    text.append("Add all your funky text in here");
    Spannable sText = (Spannable) text.getText();
    sText.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);


    Where this will highlight the charecters at pos 1 - 4 with a red color. Hope this helps!

    ReplyDelete
  3. Alternative solution: Using a WebView instead. Html is easy to work with.

    WebView webview = new WebView(this);

    String summary = "<html><body>Sorry, <span style=\"background: red;\">Madonna</span> gave no results</body></html>";

    webview.loadData(summary, "text/html", "utf-8");

    ReplyDelete

Post a Comment

Popular posts from this blog

Wildcards in a hosts file

I want to setup my local development machine so that any requests for *.local are redirected to localhost . The idea is that as I develop multiple sites, I can just add vhosts to Apache called site1.local , site2.local etc, and have them all resolve to localhost , while Apache serves a different site accordingly.