基本的なHTMLページからテキストを取得してTextViewに表示するにはどうすればよいですか。
Webビューにテキストを表示するよりも見栄えが良くなるので、この方法で実行したいと思います。
htmlページには1行しかありません。必要に応じてtxtファイルに変更できます。
簡単な例も教えてください。
基本的なHTMLページからテキストを取得してTextViewに表示するにはどうすればよいですか。
Webビューにテキストを表示するよりも見栄えが良くなるので、この方法で実行したいと思います。
htmlページには1行しかありません。必要に応じてtxtファイルに変更できます。
簡単な例も教えてください。
インターネットからデータを取得するなどの方法を使用して、最初に HTML をダウンロードする必要がありますHttpClient
(ローカル ファイルではなく、インターネットからデータを取得する必要があると仮定します)。それが完了したら、あなたが言ったように WebView に HTML を表示するか、HTML が複雑ではなく、いくつかの基本的なタグ ( <a>
、<img>
、<strong>
、<em>
、など) 以外に何も含まれていない場合は<br>
、<p>
渡すことができます。TextView
いくつかの基本的な HTML 表示をサポートしているため、そのまま使用できます。
これを行うには、単に を呼び出しHtml.fromHtml
て、ダウンロードした HTML 文字列を渡します。例えば:
TextView tv = (TextView) findViewById(R.id.MyTextview);
tv.setText(Html.fromHtml(myHtmlString));
このfromHtml
メソッドは HTML を解析し、いくつかの基本的な書式設定を適用してオブジェクトを返し、それをのメソッドSpannable
に直接渡すことができます。リンクと画像タグもサポートしています (ただし、画像の場合は、それぞれの Drawable を実際に提供するために を実装する必要があります)。しかし、CSS やインライン スタイルをサポートしているとは思えません。TextView
setText
ImageGetter
上記のスニペットの myHtmlString には、実際の HTML マークアップを含める必要があります。もちろん、これはどこかから取得する必要があります。これは、HttpClient を使用して行うことができます。
private String getHtml(String url)
{
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try
{
HttpResponse response = client.execute(request);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line;
StringBuilder builder = new StringBuilder();
while((line = reader.readLine()) != null) {
builder.append(line + '\n');
}
return builder.toString();
}
catch(Exception e)
{
//Handle exception (no data connectivity, 404, etc)
return "Error: " + e.toString();
}
}
ただし、そのコードを使用するだけでは十分ではありません。実際には別のスレッドで実行する必要があるためです (実際、Android は UI スレッドでネットワーク接続を確立することを完全に拒否する可能性があります。詳細については、AsyncTasks を参照してください)。ここでいくつかのドキュメントを見つけることができます(「Asynctask の使用」まで少し下にスクロールします)。