2012-11-16 18 views
68

Chciałbym wyświetlenia dla przykładu kod HTML:Android: html w 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> 

chcę wyświetlić go na Dialog deklarując HTML zasobów strings.xml. Jak mogę to zrobić?

+0

Check out: [Set TextView tekst z HTML sformatowany ciąg zasobu XML] (http://stackoverflow.com/questions/3235131/set-textview-text-from-html- formatted-string-resource-in-xml) Dzięki – Sam

Odpowiedz

3

String.xml puszka zawiera podmioty HTML, tak jak poniżej:

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

w kodzie: getResources().getString(R.string.hello_world); oceni do "<span>". Możesz użyć tego sformatowanego tekstu w formacie HTML:

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

Cała stylizacja obsługiwana przez system zasobów XML została wyjaśniona w dokumentacji systemu Android.

String Resources: Formatting and Styling

Wszystko zawarte tam może być używany i ustawić bezpośrednio na TextView. Jeśli chcesz użyć dalszego znacznika HTML, musisz umieścić surowy surowiec HTML (ze znakami z hasłami dla &lt;, &gt; itd.) Do zasobu i załadować całą rzecz w postaci WebView.

18

Oto większość przykładów. Nie sądzę, że tag pre jest obsługiwany.

enter image description here

Jest to plik strings.xml:

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

Oto układ. Uwaga na link, aby rzeczywiście być klikalne, tam trochę dodatkowej pracy potrzebne:

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

Wreszcie, kod:

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

dzięki ..To działa dobrze –

+0

Dzięki Bogu można używać <i> Działa bardzo dobrze. –

161

Najlepszym sposobem na dodanie kodu źródłowego HTML w strings.xml jest użyj <![CDATA[html source code]]>. Oto przykład:

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

Następnie można wyświetlić HTML w TextView używając:

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

Jeśli masz linki w HTML i chcesz, żeby być klikalny użyć tej metody:

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

Możesz użyć HTML _ bez \ CDATA, jeśli używasz 'getText()' zamiast 'getString()': http://stackoverflow.com/a/18199543/89818 – caw

+13

Tak, ale z 'CDATA' rzeczywisty HTML, który włączasz jest znacznie łatwiejsze - nie trzeba tłumaczyć całego <, >, itp. Wystarczy skopiować prawdziwy HTML i wkleić go do pliku strings.xml. –

+1

Powinna być zaakceptowaną odpowiedzią. Thx –

0

Ten pracował dla mnie:

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

Powiązane problemy