2010-03-19 16 views
8

Ho bisogno di un esempio di come visualizzare le stringhe che ho contrassegnato con semplice html in una TextView. Ho trovato "Spanned fromHtml (String source)", ma non so come collegarlo al mio codice java.Visualizzazione stringa formattata HTML

Ecco il mio Java:

package com.SorenWinslow.TriumphHistory; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class TriumphHistory extends ListActivity { 
    String[] HistoryList; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ArrayAdapter<String> adapter; 
     HistoryList = getResources().getStringArray(R.array.history); 
     adapter = new ArrayAdapter<String> (this,R.layout.historylistlayout,HistoryList); 
     setListAdapter(adapter); 

    } 
} 

Ecco un esempio della storia:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string-array name="history"> 
<item><b>1883</b><br/>Some stuff happened</item> 
<item><b>1884</b><br/>Some more stuff happened <i>before</i> the other stuff 
</item> 
<resources> 

Ecco il mio historylistlayout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:textColor="#ffffff" 
    android:background="#000050" 
    android:layout_marginTop="5px" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:padding="3px" 
    android:textSize="8pt" android:layout_gravity="top|left"/> 

E qui è il mio principale. xml

<?xml version="1.0" encoding="utf-8"?> 


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:textColor="#ffffff" 
    android:background="#000080" 
    android:isScrollContainer="true" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" android:scrollbarStyle="insideOverlay"> 

    <ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:dividerHeight="1px"/> 

</LinearLayout> 

risposta

12

Utilizzare la funzione di voi hanno citato per restituire un spanning e quindi impostare il testo del vostro TextView utilizzando il toString dell'oggetto spanning tornato in questo modo a raggiungere testo formattato:

Spanned marked_up = Html.fromHtml(yourTextWithHTML); 
((TextView) findViewById(R.id.text1)).setText(marked_up.toString()); 

Questo funzionerà in cui yourTextWithHTML è una delle le stringhe all'interno dei tag dell'articolo che hai postato. esempio "<b>1883</b><br/>Some stuff happened"

+1

Questo funziona se si sta gonfiando una risorsa di stringa, ma non se si sta gonfiando un array di stringhe. Gli array di stringhe rimuoveranno la formattazione HTML. –

8
Spanned spannedContent = Html.fromHtml(htmlString); 
    textView.setText(spannedContent, BufferType.SPANNABLE); 
1

Questo sembra più facile in realtà (da HTML in string resource?):

mTextView.setText(getText(R.string.my_styled_text)); 

Questo funziona per le stringhe che hanno HTML all'interno.

13

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

e ha riconosciuto tutti gli stili e ha formattato correttamente l'html. Più dal riferimento android HERE

+1

ha funzionato come un incantesimo ... grazie !! +1 – Hiral

0

ho affrontato lo stesso problema e risolto utilizzando

CharSequence[] HistoryList = getResources().getTextArray(R.array.history); 

Il codice rendimenti superiori designato array di testo associato alla risorsa. Si tornerà CharSequence []

Poi basta usare le elemens in

setText(HistoryList[index]); 
Problemi correlati