2012-11-16 12 views
68

I Anzeige zum Beispiel diesen HTML Code möchte:Android: html in strings.xml

<body> 
    <p><b>Hello World</b></p> 
    <p>This is a test of the URL <a href="http://www.example.com"> Example</a></p> 
    <p><b>This text is bold</b></p> 
    <p><em>This text is emphasized</em></p> 
    <p><code>This is computer output</code></p> 
    <p>This is<sub> subscript</sub> and <sup>superscript</sup></p> 
</body> 

Ich will es, indem er erklärt html strings.xml in Ressourcen auf einem Dialog angezeigt werden soll. Wie kann ich es tun?

+0

Check out: [Set Textview Text von HTML-formatierten String-Ressource in XML] (http://stackoverflow.com/questions/3235131/set-textview-text-from-html- formatiert-string-resource-in-xml) – Sam

Antwort

3

String.xml Dose enthält HTML-Entitäten, etwa so:

<resources> 
    <string name="hello_world">&lt;span&gt;</string> 
</resources> 

In Ihrem Code: getResources().getString(R.string.hello_world); zu "<span>" auswerten wird. Sie können diesen HTML-formatierten Text wie folgt verwenden:

TextView helloWorld = (TextView)findViewById(R.id.hello_world); 
helloWorld.setText(Html.fromHtml(getString(R.string.hello_world))); 
1

Das gesamte von XML-Ressourcen unterstützte Design wird in der Android-Dokumentation erläutert.

String Resources: Formatting and Styling

Alles inbegriffen dort verwendet und direkt auf TextView eingestellt werden kann. Wenn Sie weitere HTML-Markups verwenden müssen, müssen Sie Raw-HTML (mit Escapezeichen für &lt;, &gt; usw.) in die Ressource einfügen und das gesamte Objekt in eine WebView laden.

18

Hier sind die meisten Beispiele. Ich glaube nicht, dass das pre-Tag unterstützt wird.

enter image description here

Dies ist die strings.xml Datei:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_name">Formatting</string> 
    <string name="link">&lt;b&gt;Hello World&lt;/b&gt; This is a test of the URL &lt;a href="http://www.example.com/"&gt;Example&lt;/a&gt;</string> 
    <string name="bold">&lt;b&gt;This text is bold&lt;/b&gt;</string> 
    <string name="emphasis">&lt;em&gt;This text is emphasized&lt;/em&gt;</string> 
    <string name="sup">This is &lt;sub&gt;subscript&lt;/sub&gt; and &lt;sup&gt;superscript&lt;/sup&gt;</string> 
</resources> 

Hier ist das Layout. Hinweis für die Verbindung tatsächlich angeklickt werden, gibt es ein bisschen mehr Arbeit benötigt:

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

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <TextView 
      android:id="@+id/test1" 
      android:linksClickable="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="12dp" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceMedium"/> 
     <TextView 
      android:id="@+id/test2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="12dp" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceMedium"/> 
     <TextView 
      android:id="@+id/test3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="12dp" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceMedium"/> 
     <TextView 
      android:id="@+id/test4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="12dp" 
      android:text="" 
      android:textAppearance="?android:attr/textAppearanceMedium"/> 
    </LinearLayout> 
</ScrollView> 

schließlich der Code:

TextView test1 = (TextView)findViewById(R.id.test1); 
Spanned spanned = Html.fromHtml(getString(R.string.link)); 
test1.setMovementMethod(LinkMovementMethod.getInstance()); 
test1.setText(spanned); 

TextView test2 = (TextView)findViewById(R.id.test2); 
test2.setText(Html.fromHtml(getString(R.string.bold))); 

TextView test3 = (TextView)findViewById(R.id.test3); 
test3.setText(Html.fromHtml(getString(R.string.emphasis))); 

TextView test4 = (TextView)findViewById(R.id.test4); 
test4.setText(Html.fromHtml(getString(R.string.sup))); 
+0

Danke ..Das funktioniert gut –

+0

Dank Gott ist es möglich zu verwenden <und> Funktioniert sehr gut. –

161

Der beste Weg, HTML-Quellcode hinzuzufügen in strings.xml ist Verwenden Sie <![CDATA[html source code]]>. Hier ein Beispiel:

<string name="html"><![CDATA[<p>Text<p>]]></string> 

Dann können Sie diesen HTML in Textview angezeigt werden:

myTextView.setText(Html.fromHtml(getString(R.string.html))); 

Wenn Sie Links in HTML haben, und Sie wollen, dass sie anklickbar sein, verwenden Sie diese Methode:

myTextView.setMovementMethod(LinkMovementMethod.getInstance()); 
+4

Sie können HTML _without_ CDATA verwenden, wenn Sie nur 'getText()' anstelle von 'getString()' verwenden: http://StackOverflow.com/a/18199543/89818 – caw

+13

Ja, aber mit 'CDATA' ist der eigentliche HTML-Code enthalten ist viel einfacher - keine Notwendigkeit, alle <, > usw. übersetzen. Kopieren Sie einfach die echte HTML, und fügen Sie in Ihre strings.xml –

+1

sollte die akzeptierte Antwort sein. Thx –

0

Dieser arbeitete für mich:

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

<string name="app_name">Sangamner College</string> 
<string name="about_desc"><![CDATA[In order to make higher education available in the rural environment such as of Sangamner, Shikshan Prasarak Sanstha was established in 1960. Sangamner College was established by Shikshan Prasarak Sanstha, Sangamner on 23rd January 1961 on the auspicious occasion of Birth Anniversary of Netaji Subhashchandra Bose.The Arts and Commerce courses were commenced in June 1961 and in June 1965 Science courses were introduced. When Sangamner College was founded forty years ago, in 1961, there was no college available to the rural youth of this region. <br><br></>The college was founded with the aim of upliftment of the disadvantageous rural youth in all respects. On one hand, we are aware of the social circumstances prevailing in the rural area where we are working. So, we offer the elective option to students, which are favourable to the local atmosphere. On the other hand, we want to academically empower the aspiring youth by offering vocational course in Computer Applications to students of Arts &amp; Commerce. B.B.A., B.C.A. and M.C.A. courses were started with the same purpose. “Think globally, act locally” is our guiding Principle.]]></string> 

Verwandte Themen