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。どうすればできますか?


回答:


218

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
あなたは、HTMLを使用することができずにあなただけを使用する場合CDATA getText()の代わりにgetString()stackoverflow.com/a/18199543/89818
CAW

16
はい。ただしCDATA、実際に含めるHTMLの方がはるかに簡単です。<、>などをすべて翻訳する必要はありません。実際のHTMLをコピーして、strings.xmlに貼り付けるだけです
Richard Le Mesurier

ありがとう、うまくいきます。テキストビューでテキストを垂直方向に中央揃えする方法を知りたいだけです。
ハーマン

7
CDATAを取得したいテキストを選択し、Ctrl + Alt + Tを押します-> [CDATAセクションのあるサローン]を選択します
Prashant Jajal

申し訳ありませんが、機能しません。文字列u、i、およびHtml.fromでサポートされているすべてのタグで機能することがわかった唯一の有効なソリューションは、wsanvilleのソリューションなので、&ltと&gtを使用してHTMLタグを開閉します。
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 2016年

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.