Android лучший способ отображать html-текст

У меня есть строка с html tags, links, image links, так как лучше всего отобразить эту строку? Я знаю, что люди используют для этого Webview, но, может быть, есть способ сделать это в текстовом представлении, не затрачивая слишком много работы? Поскольку с WebView возникают другие проблемы, например, если вы хотите изменить цвет текста, вам нужно добавить дополнительный стиль к этой строке. Меня интересуют способы сделать ссылки интерактивными и отображать изображения в одном текстовом окне.

Каков полный список тегов, которые вы будете использовать в HTML?

CommonsWare 03.06.2018 20:41

Возможный дубликат Как отобразить HTML в TextView?

Yassin Yassin 03.06.2018 21:14

Это не дубликат, который вы видите, я знаю, как отображать html в текстовом представлении, но как насчет ссылок и их интерактивности с помощью текстового просмотра, а также отображения изображений из ссылки внутри этого текстового представления

LeTadas 03.06.2018 21:51
1
3
7 309
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Try using this: -

Html.fromHtml("your html code");

Example: -

txtvw.setText(Html.fromHtml("<p align=right> <b> "
        + "Hi!" + " <br/> <font size=6>"
        + " How are you "+"</font> <br/>"
        + "I am fine" + "  </b> </p>"));

Output: -

Hi
Как дела
я в порядке

**Full Code With Image And Hyperlink**: -

import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;

public class MainActivity extends Activity {

 String htmlString = "<img src='ic_launcher'><i>Welcome to<i> <b><a href='https://stackoverflow.com/'>Stack Overflow</a></b>";

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  TextView htmlTextView = new TextView(this);
  setContentView(htmlTextView);

  htmlTextView.setText(Html.fromHtml(htmlString, new Html.ImageGetter(){

   @Override
   public Drawable getDrawable(String source) {
    Drawable drawable;
    int dourceId = 
      getApplicationContext()
      .getResources()
      .getIdentifier(source, "drawable", getPackageName());

    drawable = 
      getApplicationContext()
      .getResources()
      .getDrawable(dourceId);

    drawable.setBounds(
      0, 
      0, 
      drawable.getIntrinsicWidth(),
      drawable.getIntrinsicHeight());

    return drawable;
   }

  }, null));

  htmlTextView.setMovementMethod(LinkMovementMethod.getInstance());

 }

}

To support all API use this function: -

@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
    }
    else {
        return Html.fromHtml(html);
    }
}

как насчет того, чтобы сделать ссылки интерактивными или отображать изображения?

LeTadas 03.06.2018 21:52

Хороший! еще одна вещь из, я думаю, 27 api fromHtml устарела, будет ли этот подход работать с 27 и выше api?

LeTadas 03.06.2018 22:13

Другие вопросы по теме