2009-07-14 1 views

risposta

8

Dovresti essere in grado di utilizzare Html.fromHtml() per convertire HTML non elaborato in un oggetto Spanned che è possibile utilizzare in una chiamata setText() sul pulsante. Come afferma la documentazione Html, "Non tutti i tag HTML sono supportati".

+0

c'è un modo per farlo senza utilizzare il codice Java? Ho testo statico codificata in un file di risorse:

XX YY

user121196

+0

Non che io sia a conoscenza. – CommonsWare

+0

Dovresti essere in grado di utilizzare la stessa chiamata di metodo utilizzata da @ commonsware.com e ottenere semplicemente la stringa dal file di risorse. Context.getString (R.id.x) dovrebbe essere questo –

3

La risposta di Mark è azzeccata, come al solito. Ecco un esempio più completo di riferimento (questa è una parte confusa dei documenti). (E, sì, lo so questo esempio non utilizza un Button, ma questo è quello che avevo a portata di mano, ed è la stessa idea.)

stringa deve essere una risorsa:

<?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> 

quindi ottenere la risorsa e utilizzare Html.fromHtml() (se si utilizza un EditText, è inoltre necessario assicurarsi che il buffer è impostato su 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); 
     } 
     ... 

Infine, si noti che tutto il codice HTML non funziona, naturalmente. Quindi, a seconda delle tue esigenze, questo potrebbe non essere del tutto utile. Vedi anche questo issue se cerchi di usare un link (tag di ancoraggio) e vuoi che risponda al clic. Per cose semplici, vedi Linkify.

1

Queste due risposte sono anche valide, puoi anche farlo in questo modo. Stavo cercando di fare qualcosa della stessa natura e ho scoperto che il mio HTML con i CSS non è stato sempre formattata correttamente così ho preso la corda e caricato in una WebView come questo:

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"); 

ed è riconosciuto tutto il stili e formattato correttamente l'html. Altro dal riferimento Android HERE