【Android】TextViewでHTMLを表示するには?HtmlCompat.fromHtml()の使い方を解説
AndroidのTextViewでHTMLを表示する方法
Androidアプリ開発では、HTML形式の文字列を取得して、そのままテキストとして画面に表示したい場面があります。本記事では、TextViewにHTMLを表示するためのシンプルな実装方法を、サンプルコード付きでステップごとに解説します。
Step 1:プロジェクトを新規作成する
まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成しましょう。
Step 2:レイアウトファイルにTextViewを追加する
次に、res/layout/activity_main.xml に以下のコードを記述します。
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:tools = "https://schemas.android.com/tools"
android:id = "@+id/rootview"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "vertical"
tools:context = ".MainActivity">
<TextView
android:id = "@+id/htmlToTextView"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content" />
</LinearLayout>ここでは、HTMLを表示するためのTextView(ID:htmlToTextView)を垂直方向のLinearLayout内に配置しています。
Step 3:MainActivity.java に処理を記述する
続いて、src/MainActivity.java に以下のコードを追加します。
package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v4.text.HtmlCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
String htmlText = "<h2>What is Android?</h2>\n" + "<p>Android is an open source and Linux-based <b>Operating System</b> for mobile devices such as smartphones and tablet computers.
Android was developed by the <i>Open Handset Alliance</i>, led by Google, and other companies.</p>\n" + "<p>Android offers a unified approach to application development for mobile devices which means developers need only develop for Android, and their applications should be able to run on different devices powered by Android.</p>\n" + "<p>The first beta version of the Android Software Development Kit (SDK) was released by Google in 2007 whereas the first commercial version, Android 1.0, was released in September 2008.</p>";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView htmlToTextView = findViewById(R.id.htmlToTextView);
htmlToTextView.setText(HtmlCompat.fromHtml(htmlText, 0));
}
}この例では、HTMLタグを含む文字列を変数 htmlText として保持し、それをTextViewにセットしています。ポイントとなるのは次の一行です。
htmlToTextView.setText(HtmlCompat.fromHtml(htmlText, 0));
HtmlCompat.fromHtml() メソッドは、HTML形式の文字列を解析し、TextViewで表示できる形式(Spanned)に変換します。その戻り値を setText() でTextViewに渡すことで、見出しや太字・斜体などのHTMLタグが反映されたテキストを表示できます。第2引数の「0」はフラグであり、プロジェクトの要件に応じて FROM_HTML_MODE_LEGACY や FROM_HTML_MODE_COMPACT などの値を指定することも可能です。
アプリを実行して確認する
それでは、実際にアプリを実行してみましょう。Android端末をパソコンに接続していることを確認してください。Android Studioでプロジェクトのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行デバイスとして自分のモバイル端末を選択すると、端末の画面に以下のようにHTMLが整形されて表示されます。

上記の例では、HTMLタグを含む文字列がそのままTextViewに渡されています。
まとめ
TextViewでHTMLを表示するには、HtmlCompat.fromHtml() を使うのが最も簡単な方法です。androidxライブラリのHtmlCompatを利用すれば、古いAPIレベルの端末との互換性も保たれるため、幅広い環境で安定して動作します。ニュース記事やお知らせ文など、HTML形式のコンテンツをアプリ内で表示したいケースにぜひ活用してみてください。
-
AndroidでHTMLを解析する方法!Jsoupを使った実装手順をステップごとに解説
この記事では、AndroidアプリでHTMLを解析(パース)する方法を、人気のJavaライブラリ「Jsoup」を使ったサンプルコードとともに解説します。Webサイトのタイトルやリンク情報を取得して画面に表示するまでの一連の流れを、初心者にもわかるようにステップごとに紹介します。HTML解析にはJsoupが便利AndroidでHTMLを扱う場合、HTMLパーサーライブラリのJsoupを利用するのが定番です。Jsoupを使えば、URLからHTMLを取得し、CSSセレクタに近い直感的な記法で任意の要素を簡単に抽出できます。スクレイピングやWeb上のデータ取得処理を少ないコード量で実装できるのが大きな
-
【Android】TextViewでテキストを両端揃え(ジャスティファイ)表示する方法
概要 本記事では、AndroidアプリのTextViewに表示するテキストを両端揃え(ジャスティファイ)にする方法を、サンプルコードとともにわかりやすく解説します。 TextViewで両端揃えを実現するには、android:justificationMode=inter_wordを指定するだけです。この機能はAndroid 8.0(APIレベル26)以降で有効になるため、それ以前のOSバージョンでは無視される点に注意してください。 手順1:新規プロジェクトを作成する まず、Android Studioを起動し、メニューから「File」⇒「New Project」を選択します。必要な項目をす