2010-03-19 11 views
8

Ich brauche ein Beispiel für die Anzeige der Zeichenfolgen, die ich mit einfachen HTML in einem TextView markiert habe. Ich habe gefunden "Spanned fromHtml (String source)", aber ich weiß nicht, wie man es in meinen Java-Code einfügt.HTML formatierten String anzeigen

Hier ist meine 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); 

    } 
} 

Hier ist ein Beispiel der Geschichte:

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

Hier ist meine 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"/> 

Und hier ist mein Haupt. 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> 

Antwort

12

die Funktion Verwenden Sie erwähnt eine überspannte zurückkehren und dann den Text Ihrer Textview wie so formatierten Text zu erreichen, die toString des zurück Spanned-Objekt:

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

Dies funktioniert, wo yourTextWithHTML jeder ist die Strings innerhalb der von Ihnen geposteten Item-Tags. zB "<b>1883</b><br/>Some stuff happened"

+1

Dies funktioniert, wenn Sie einen String-Ressource sind aufblasen, aber nicht, wenn Sie ein String-Array sind aufzublasen. String-Arrays entfernen die HTML-Formatierung. –

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

Dies scheint am einfachsten tatsächlich (von HTML in string resource?):

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

Diese für Strings arbeitet, die HTML innen haben.

13

ich versuchte, etwas von der gleichen Art zu tun und fand heraus, dass meine html zusammen mit CSS wurde nicht korrekt formatiert zu werden, damit ich die Zeichenfolge nahm und lud sie in ein webview wie folgt aus:

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

und Es erkannte alle Stile und formatierte das HTML korrekt. Mehr aus der Referenz android HERE

+1

arbeitete wie Charme ... danke !! +1 – Hiral

0

konfrontiert ich das gleiche Problem und löste es durch

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

Der obige Code gibt formatierten Text-Array zugeordnet Ressource verwenden. Es wird wieder CharSequence []

Dann benutzen Sie einfach die elemens in

setText(HistoryList[index]); 
Verwandte Themen