tags:

views:

1330

answers:

2

how do I use html in an android widget Button?

+4  A: 

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".

CommonsWare
is there a way to do it without using Java code? I have static text encoded in a resource file:<Buttonandroid:id="@+id/x_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/x"</Button><resources> <string name="x"><p>XX</p>YY</string></resources>
Not that I am aware of.
CommonsWare
You should be able to use the same method call that @commonsware.com used, and just get the string from the resource file. Context.getString(R.id.x) should be it
Andrew Burgess
A: 

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 a TextEdit, 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. (Also, for simple stuff, see Linkify.)

Charlie Collins