2016-11-18 1 views
3

Я пытаюсь показать строку HTML с TextView в моем приложении Android. Мне интересно, как я могу показать HTML с встроенным стилем через TextView. Есть некоторые причины, по которым мы не можем использовать WebView для этого. Есть ли в GitHub репозиторий, который, как вы знаете, работает?можно отобразить чистый HTML-код через textview на android

Спасибо за помощь.

Просто для беспокойства, мы должны запустить его совершенно на API 15.

+1

Вы можете использовать "Html.fromHtml", но TextView поддерживает только ограниченное количество тегов https://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html. Можем ли мы, что yu не может использовать веб-просмотр? –

+0

Это жуткое требование от нашего премьер-министра. – Frank

ответ

4

Вы должны использовать Html.fromHtml() использовать HTML в вашем textView как текст

пример:

textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>")); 
+0

Мы должны поддерживать встроенный стиль. Например style = "font-size: 20px; font-weight: 600; color: # FF0000; text-ali gn: center;" – Frank

+0

@Frank android не поддерживает все HTML-таблицы напрямую. – AJay

+0

Список поддерживаемых тегов находится здесь https://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html – AJay

2

Я не помню источник, который я получаю, но я сделал так:

// get our html content 
String htmlAsString = getString(R.string.html); 
Spanned htmlAsSpanned = Html.fromHtml(htmlAsString); // used by TextView 

// set the html content on the TextView 
TextView textView = (TextView) findViewById(R.id.textView); 
textView.setText(htmlAsSpanned); 

HTML строка на файле XML:

<resources> 
    <string name="app_name">TestProject2</string> 

    <string name="html"> 
     <![CDATA[ 
     <h1>Main Title</h1> 
     <h2>A sub-title</h2> 
     <p>This is some html. Look, here\'s an <u>underline</u>.</p> 
     <p>Look, this is <em>emphasized.</em> And here\'s some <b>bold</b>.</p> 
     <p>This is a UL list: 
     <ul> 
     <li>One</li> 
     <li>Two</li> 
     <li>Three</li> 
     </ul> 
     <p>This is an OL list: 
     <ol> 
     <li>One</li> 
     <li>Two</li> 
     <li>Three</li> 
     </ol> 
     ]]> 
    </string> 
</resources> 

Определение на TextView:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:context=".MainActivity" 
       android:orientation="vertical" 
       android:gravity="top|fill_vertical"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 

    <!-- 
    <WebView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/webView" 
     android:layout_below="@+id/helloWorld" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     /> 
    --> 

</LinearLayout> 

И основной деятельности

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.text.Html; 
import android.text.Spanned; 
import android.widget.TextView; 

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // get our html content 
     String htmlAsString = getString(R.string.html);  // used by WebView 
     Spanned htmlAsSpanned = Html.fromHtml(htmlAsString); // used by TextView 

     // set the html content on a TextView 
     TextView textView = (TextView) findViewById(R.id.textView); 
     textView.setText(htmlAsSpanned); 

//  WebView webView = (WebView) findViewById(R.id.webView); 
//  webView.loadDataWithBaseURL(null, htmlAsString, "text/html", "utf-8", null); 

    } 

} 
+0

Не вариант. Мы должны поддерживать встроенный стиль. Например style = "font-size: 20px; font-weight: 600; color: # FF0000; text-align: center;" – Frank

Смежные вопросы