ホームページ  >  記事  >  ウェブフロントエンド  >  TextView は HTML タグ_html/css_WEB-ITnose を使用します

TextView は HTML タグ_html/css_WEB-ITnose を使用します

WBOY
WBOYオリジナル
2016-06-21 09:16:251223ブラウズ

TextView でのリッチテキストの実装については、Html を使用する方法と、SpannableString を使用する方法があります

SpannableString は面倒なので、こちらを参考にしてください:

http://www.chawenti .com/articles /16016.html


TextView での Html の使用については、このブログを参照してください

http://blog.csdn.net/johnsonblog/article/details/7741972#comments

String クラスCharSequence のサブクラスです。CharSequence サブクラスには Spanned というインターフェイスがあり、これを使用して HTML を TextView に表示できます。ただし、上記の Android ソース コードのコメントでは、TextView が HTML のような書式設定を受け入れないことが述べられています。

android.text.Html クラスは合計 3 つのメソッドを提供しており、これらは Android ヘルプ ドキュメントで確認できます。


public static Spanned fromHtml (文字列ソース)
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
public static String toHtml (Spanned text)


最初のものはよく使われますメソッド:

       TextView tv=(TextView)findViewById(R.id.textView1);          String html="<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"                  +"<p><a href=\"http://www.dreamdu.com/xhtml/\">超链接HTML入门</a>学习HTML!</p><p><font color=\"#aabb00\">颜色1"                  +"</p><p><font color=\"#00bbaa\">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6><p>大于>小于<</p><p>" +                  "下面是网络图片</p><img src=\"http://avatar.csdn.net/0/3/8/2_zhang957411207.jpg\"/></body></html>";                    tv.setMovementMethod(ScrollingMovementMethod.getInstance());//滚动          tv.setText(Html.fromHtml(html));


画像の表示を実現するには、Html.fromHtml の 2 番目の再構築メソッドを使用する必要があります:

public static Spanned fromHtml (String source, Html.ImageGetterimageGetter, Html.TagHandler tagHandler)

Html.ImageGetter はインターフェイスであり、このインターフェイスを実装し、その getDrawable(String source) メソッドで画像の Drawable オブジェクトを返す必要があります。

ImageGetter imgGetter = new Html.ImageGetter() {        public Drawable getDrawable(String source) {              Drawable drawable = null;              URL url;                try {                     url = new URL(source);                    drawable = Drawable.createFromStream(url.openStream(), "");  //获取网路图片              } catch (Exception e) {                    return null;                }                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable                            .getIntrinsicHeight());              return drawable;         }};


ここでは主に Html.ImageGetter インターフェイスを実装し、画像の URL アドレスを通じて対応する Drawable インスタンスを取得します。

上記の紹介はインターネット上の画像を表示するものですが、ローカル画像を表示する方法:

   ImageGetter imgGetter = new Html.ImageGetter() {        public Drawable getDrawable(String source) {              Drawable drawable = null;                             drawable = Drawable.createFromPath(source); //显示本地图片              drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable                            .getIntrinsicHeight());              return drawable;         }};

ここでは、ソースをローカル画像のパスに変更するだけです:

文字列ソース;
ソース。 =getFilesDir()+"/ic_launcher.png";

/////////////////////////////////// //////////////////////////////////////////////// / ///////////////////////////////////////

ここでは主に使い方についてお話します出典

http://www.jb51.net/article/36643.htm


ただし、デフォルトでサポートされているタグでは十分ではない場合があります。たとえば、ネットワーク接続だけでなく、アプリケーションのインターフェイスに戻るには、textView で特定のリンクをクリックする必要があります。これを実現するにはどうすればよいでしょうか。

Html クラス クリック タグの処理を処理するインターフェイス クラスがあります。したがって、このインターフェイスを実装して、定義したタグ タイプを解析できます。

b040abc0907b2abf3408915a666be355 タグをカスタマイズしてインターフェイスを実装します

/**     * Is notified when HTML tags are encountered that the parser does     * not know how to interpret.     */     public static interface TagHandler {         /**         * This method will be called whenn the HTML parser encounters         * a tag that it does not know how to interpret.         */         public void handleTag(boolean opening, String tag,                                  Editable output, XMLReader xmlReader);

次に、プロジェクト内でメソッドを呼び出します:


textView.fromHtml("Click b040abc0907b2abf3408915a666be355here3d268a49d0b56bca1ed2d4a0b438f157ゲームにジャンプ",null, new GameTagHandler()));

textView.setClickable(true);

textView.setMovementMethod(LinkMovementMethod.getInstance());

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。