Android: strings.xml'de html


92

Örneğin şu html kodunu görüntülemek istiyorum:

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

Kaynaklarda html bildirerek bunu bir İletişim Kutusunda görüntülemek istiyorum strings.xml. Nasıl yapabilirim?


Yanıtlar:


219

Strings.xml dosyasına html kaynak kodu eklemenin en iyi yolu kullanmaktır <![CDATA[html source code]]>. İşte bir örnek:

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

Daha sonra bu html'yi TextView'da şunu kullanarak görüntüleyebilirsiniz:

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

HTML'nizde bağlantılar varsa ve bunların tıklanabilir olmasını istiyorsanız, şu yöntemi kullanın:

myTextView.setMovementMethod(LinkMovementMethod.getInstance());

9
Sen HTML kullanabilirsiniz olmadan sadece kullanırsanız CDATA'da getText()yerine getString(): stackoverflow.com/a/18199543/89818
caw

16
Evet, ancak CDATAeklediğiniz gerçek HTML ile çok daha kolay - tüm <,> vb. Çevirmeye gerek yok. Sadece gerçek HTML'yi kopyalayın ve strings.xml dosyanıza yapıştırın
Richard Le Mesurier

Teşekkürler, iyi çalışıyor. Metin görünümünde metni dikey olarak nasıl ortalayacağımı öğrenmek istiyorum.
Herman

7
CDATA istediğiniz metni seçin .. ve ctrl + alt + T -> 'CDATA bölümü ile Surrounf'u seçin
Prashant Jajal

Üzgünüm ama işe yaramıyor. String, u, i ve Html.from için desteklenen tüm etiketlerle çalışırken bulduğum tek geçerli çözüm wsanville'den gelen bir etikettir, bu nedenle HTML etiketini açmak ve kapatmak için & lt ve & gt kullanın.
Peter

27

İşte örneklerin çoğu. preEtiketin desteklenmediğini düşünüyorum .

görüntü açıklamasını buraya girin

Bu strings.xmldosya:

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

İşte düzen. Bağlantının gerçekten tıklanabilir olması için biraz fazladan çalışma yapılması gerektiğini unutmayın:

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

Son olarak, kod:

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

Tanrıya şükür & lt; ve & gt; Çok iyi çalışıyor.
Torsten Ojaperv

6

String.xml, aşağıdaki gibi HTML varlıkları içerebilir:

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

Kodunuzda: olarak getResources().getString(R.string.hello_world);değerlendirilecektir "<span>". Bu HTML formatlı metni şu şekilde kullanabilirsiniz:

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

3

XML kaynakları sistemi tarafından desteklenen tüm stil özellikleri Android belgelerinde açıklanmıştır.

Dize Kaynakları: Biçimlendirme ve Stil

İçerdiği her şey doğrudan kullanılabilir ve ayarlanabilir TextView. Eğer daha fazla HTML işaretlemesi kullanmanız gerekiyorsa, (kaçan için karakterlerle ham HTML yerleştirmeniz gerekir &lt;, &gt;kaynak içine ve gibi) ve bütün şeyi yüklemek WebView.


2

Bu benim için çalıştı:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.