Android : strings.xml의 html


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

strings.xml에 html 소스 코드를 추가하는 가장 좋은 방법은 <![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
대신 다음을 사용하면 CDATA 없이 HTML 사용할 수 있습니다 . stackoverflow.com/a/18199543/89818getText()getString()
caw

16
예,하지만 CDATA실제 HTML을 사용하면 포함하는 것이 훨씬 쉽습니다. 모든 <,> 등을 번역 할 필요가 없습니다. 실제 HTML을 복사하여 strings.xml에 붙여 넣으십시오.
Richard Le Mesurier 2013

감사합니다. 잘 작동합니다. textview에서 텍스트를 세로로 가운데에 맞추는 방법을 알고 싶습니다.
Herman

7
CDATA를 원하는 텍스트를 선택하고 ctrl + alt + T를 누른다-> 'Surrounf with CDATA section'선택
Prashant Jajal

죄송하지만 작동하지 않습니다. 내가 찾은 유일한 유효한 해결책은 문자열, u, i 및 Html.from에 대해 지원되는 모든 태그가 wsanville의 것이므로 HTML 태그를 열고 닫을 때 & lt 및 & gt를 사용하십시오.
Peter

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.