0

基本的なHTMLページからテキストを取得してTextViewに表示するにはどうすればよいですか。

Webビューにテキストを表示するよりも見栄えが良くなるので、この方法で実行したいと思います。

htmlページには1行しかありません。必要に応じてtxtファイルに変更できます。

簡単な例も教えてください。

4

1 に答える 1

1

インターネットからデータを取得するなどの方法を使用して、最初に 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 やインライン スタイルをサポートしているとは思えません。TextViewsetTextImageGetter

HTML のダウンロード方法:

上記のスニペットの 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 の使用」まで少し下にスクロールします)。

于 2012-06-23T16:14:54.243 に答える