Android: html di strings.xml

92

Saya ingin menampilkan misalnya kode html ini:

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

Saya ingin menampilkannya di Dialog dengan mendeklarasikan html di resource strings.xml. Bagaimana saya bisa melakukannya?

Alberto Alberto
sumber

Jawaban:

219

Cara terbaik untuk menambahkan kode sumber html di strings.xml adalah dengan menggunakan <![CDATA[html source code]]>. Berikut ini contohnya:

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

Kemudian Anda dapat menampilkan html ini di TextView menggunakan:

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

Jika Anda memiliki link di html Anda dan ingin agar dapat diklik, gunakan metode ini:

myTextView.setMovementMethod(LinkMovementMethod.getInstance());
Mario Kutlev
sumber
9
Anda dapat menggunakan HTML tanpa CDATA jika Anda hanya menggunakan getText()sebagai ganti getString(): stackoverflow.com/a/18199543/89818
caw
16
Ya, tetapi dengan CDATAHTML yang sebenarnya Anda sertakan jauh lebih mudah - tidak perlu menerjemahkan semua <,>, dll. Cukup salin HTML asli, dan tempelkan ke strings.xml Anda
Richard Le Mesurier
Terima kasih, bekerja dengan baik. Saya hanya ingin tahu bagaimana memusatkan teks secara vertikal di textview.
Herman
7
pilih teks yang Anda inginkan CDATA .. dan tekan ctrl + alt + T -> pilih 'Surrounf dengan bagian CDATA'
Prashant Jajal
Maaf tapi tidak berhasil. Satu-satunya solusi valid yang saya temukan berfungsi dengan string, u, i, dan semua tag yang didukung untuk Html.from adalah yang dari wsanville, jadi gunakan & lt dan & gt untuk membuka dan menutup tag HTML.
Peter
27

Berikut sebagian besar contohnya. Saya rasa pretag tersebut tidak didukung.

masukkan deskripsi gambar di sini

Ini adalah strings.xmlfilenya:

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

Berikut tata letaknya. Perhatikan agar tautan benar-benar dapat diklik, ada sedikit pekerjaan tambahan yang diperlukan:

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

Terakhir, kode:

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)));
wsanville.dll
sumber
Terima kasih Tuhan, ini memungkinkan untuk menggunakan & lt; dan & gt; Bekerja dengan sangat baik.
Torsten Ojaperv
6

String.xml dapat berisi entitas HTML, seperti:

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

Dalam kode Anda: getResources().getString(R.string.hello_world);akan mengevaluasi ke "<span>". Anda dapat menggunakan teks berformat HTML ini seperti ini:

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

Semua gaya yang didukung oleh sistem sumber daya XML dijelaskan dalam dokumentasi Android.

Sumber Daya String: Pemformatan dan Gaya

Apa pun yang disertakan di sana dapat digunakan dan disetel langsung TextView. Jika Anda perlu menggunakan markup HTML lebih lanjut, Anda perlu menempatkan HTML mentah (dengan karakter yang di-escape untuk &lt;, &gt;dan semacamnya) ke dalam sumber daya dan memuat semuanya di file WebView.

devunwired
sumber
2

Ini Berhasil untuk saya:

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

Suyog Gunjal
sumber