Android: html ใน strings.xml


92

ฉันต้องการแสดงตัวอย่างโค้ด html นี้:

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

ผมต้องการที่จะแสดงบนโต้ตอบด้วยการประกาศ html strings.xmlของทรัพยากร ฉันจะทำมันได้อย่างไร?


คำตอบ:


219

วิธีที่ดีที่สุดที่จะเพิ่มรหัสที่มา HTML ใน strings.xml <![CDATA[html source code]]>คือการใช้งาน นี่คือตัวอย่าง:

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

จากนั้นคุณสามารถแสดง html นี้ใน TextView โดยใช้:

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

หากคุณมีลิงก์ใน html และต้องการให้คลิกได้ให้ใช้วิธีนี้:

myTextView.setMovementMethod(LinkMovementMethod.getInstance());

9
คุณสามารถใช้ HTML โดยไม่ใช้ CDATA ได้หากคุณใช้getText()แทนgetString(): stackoverflow.com/a/18199543/89818
caw

16
ใช่ แต่กับCDATAHTML ที่จริงคุณรวมเป็นเรื่องง่าย - ไม่จำเป็นต้องแปลทั้งหมด <,>, ฯลฯ เพียงคัดลอก HTML จริงและวางลงใน strings.xml ของคุณ
ริชาร์ดเลอ Mesurier

ขอบคุณทำงานได้ดี ฉันต้องการทราบวิธีจัดกึ่งกลางข้อความในแนวตั้งในมุมมองข้อความ
Herman

7
เลือกข้อความที่คุณต้องการ CDATA .. และกด ctrl + alt + T -> เลือก 'Surrounf with CDATA section'
Prashant Jajal

ขออภัย แต่ไม่ได้ผล โซลูชันเดียวที่ใช้ได้ที่ฉันพบว่าใช้งานได้ wih string, u, i และแท็กที่รองรับสำหรับ Html.from คืออันที่มาจาก wsanville ดังนั้นให้ใช้ & lt และ & gt เพื่อเปิดและปิดแท็ก HTML
ปีเตอร์

27

นี่คือตัวอย่างส่วนใหญ่ ฉันไม่คิดว่าpreแท็กได้รับการสนับสนุน

ป้อนคำอธิบายภาพที่นี่

นี่คือ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>

นี่คือเค้าโครง หมายเหตุสำหรับลิงก์ที่สามารถคลิกได้จริงจำเป็นต้องมีงานเพิ่มเติมเล็กน้อย:

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

สุดท้ายรหัส:

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

ขอบคุณพระเจ้าที่สามารถใช้ & lt; และ & gt; ทำงานได้ดีมาก
Torsten Ojaperv

6

String.xml สามารถมีเอนทิตี HTML ได้ดังนี้:

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

ในรหัสของคุณ: จะมีการประเมินเพื่อgetResources().getString(R.string.hello_world); "<span>"คุณสามารถใช้ข้อความที่จัดรูปแบบ HTML ได้ดังนี้:

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

3

รูปแบบทั้งหมดที่ระบบทรัพยากร XML รองรับมีอธิบายไว้ในเอกสาร Android

ทรัพยากรสตริง: การจัดรูปแบบและสไตล์

TextViewสิ่งใดรวมมีสามารถใช้และตั้งอยู่บน หากคุณจำเป็นต้องใช้มาร์กอัป HTML ต่อไปคุณจะต้องวาง HTML ดิบ (กับตัวละครหนี&lt;, &gt;และเช่น) WebViewลงในทรัพยากรและโหลดสิ่งทั้งหมดใน


2

สิ่งนี้ได้ผลสำหรับฉัน:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.