user121196
user121196

Reputation: 31060

android button text and html

how do I use html in an android widget Button?

Upvotes: 7

Views: 12884

Answers (3)

Charlie Collins
Charlie Collins

Reputation: 8876

Mark's answer is spot on, as usual. Here is a more complete example for reference though (this is a confusing part of the docs). (And, yes, I know this example isn't using a Button, but this is the one I had handy, and it's the same idea.)

String needs to be a resource:

 <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="mystring">    
        You can use regular text, and escaped HTML markup
        &lt;br /&gt;&lt;br /&gt;
        A simple BOLD example &lt;b&gt;StackOverflow&lt;/b&gt;.
    </string>
    </resources>

Then get the resource and use Html.fromHtml() (if you are using an EditText, you also need to make sure the buffer is set to SPANNABLE):

 public class MyActivity extends Activity {
    TextView myTextView;

       @Override
       public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.about);     

          myTextView = (TextView) this.findViewById(R.id.mytextview);
          myTextView.setText(Html.fromHtml(getResources().getString(R.string.mystring)),
                             TextView.BufferType.SPANNABLE);
       }  
       ...

Lastly, note that all HTML doesn't work, of course. So depending on your requirements, this might not be entirely useful. Also see this issue if you try to use a link (anchor tag) and you want it to respond to being clicked. For simple stuff, see Linkify.

Upvotes: 3

ninjasense
ninjasense

Reputation: 13856

These two answers are also valid, you can also do it like this. I was trying to do something of the same nature and found out that my html along with CSS was not getting formatted correctly so I took the string and loaded it into a webview like this:

 WebView webview = (WebView) findViewById(R.id.MyWebview);
 String summary = "<html><body>You scored <b>192</b> points.</body></html>";
 webview.loadData(summary, "text/html", "utf-8");

and it recognized all the styles and formatted the html correctly. More from the android reference HERE

Upvotes: 1

CommonsWare
CommonsWare

Reputation: 1007474

You should be able to use Html.fromHtml() to convert raw HTML into a Spanned object that you can use in a setText() call on your button. As the Html documentation states, "Not all HTML tags are supported".

Upvotes: 8

Related Questions