Android: html trong string.xml


92

Tôi muốn hiển thị ví dụ mã html này:

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

Tôi muốn hiển thị nó trên Hộp thoại bằng cách khai báo html trong tài nguyên strings.xml. Tôi làm nó như thế nào?


Câu trả lời:


218

Cách tốt nhất để thêm mã nguồn html trong string.xml là sử dụng <![CDATA[html source code]]> . Đây là một ví dụ:

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

Sau đó, bạn có thể hiển thị html này trong TextView bằng cách sử dụng:

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

Nếu bạn có các liên kết trong html của mình và bạn muốn chúng có thể nhấp được, hãy sử dụng phương pháp này:

myTextView.setMovementMethod(LinkMovementMethod.getInstance());

9
Bạn có thể sử dụng HTML không CDATA nếu bạn chỉ cần sử dụng getText()thay vì getString(): stackoverflow.com/a/18199543/89818
caw

16
Có, nhưng với CDATAHTML thực tế bạn bao gồm là dễ dàng hơn nhiều - không cần phải dịch tất cả các <,>, vv Chỉ cần sao chép mã HTML thực, và dán vào strings.xml của bạn
Richard Le Mesurier

Cảm ơn, hoạt động tốt. Tôi chỉ muốn biết cách căn giữa văn bản theo chiều dọc trong textview.
Herman

7
chọn văn bản mà bạn muốn CDATA .. và nhấn Ctrl + Alt + T -> chọn 'Surrounf với phần CDATA'
Prashant Jajal

Xin lỗi, nhưng nó không hoạt động. Giải pháp hợp lệ duy nhất mà tôi đã tìm thấy đang hoạt động với chuỗi wih, u, i và tất cả các thẻ được hỗ trợ cho Html.from là giải pháp từ wsanville, vì vậy hãy sử dụng & lt và & gt để mở và đóng thẻ HTML.
Peter

27

Đây là hầu hết các ví dụ. Tôi không nghĩ rằng prethẻ được hỗ trợ.

nhập mô tả hình ảnh ở đây

Đây là strings.xmltệp:

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

Đây là bố cục. Lưu ý để liên kết thực sự có thể nhấp được, cần phải thực hiện thêm một chút:

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

Cuối cùng, mã:

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

Cảm ơn chúa, bạn có thể sử dụng & lt; và & gt; Hoạt động rất tốt.
Torsten Ojaperv

6

String.xml có thể chứa các thực thể HTML, như sau:

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

Trong mã của bạn: getResources().getString(R.string.hello_world);sẽ đánh giá đến "<span>". Bạn có thể sử dụng văn bản được định dạng HTML như thế này:

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

3

Tất cả kiểu được hỗ trợ bởi hệ thống tài nguyên XML được giải thích trong tài liệu Android.

Tài nguyên chuỗi: Định dạng và tạo kiểu

Bất cứ thứ gì có trong đó đều có thể được sử dụng và thiết lập trực tiếp TextView. Nếu bạn cần sử dụng thêm đánh dấu HTML, bạn sẽ cần đặt HTML thô (với các ký tự thoát cho &lt;, &gt;v.v.) vào tài nguyên và tải toàn bộ nội dung trong a WebView.


2

Điều này đã làm việc cho tôi:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.