富文本 Htmll類 html標簽



HTML類可解析的標簽
       
       
       
               
在手機上顯示從網絡端獲取的數據有兩種方式,一種是WebView,另一種是TextView, WebView 大家都知道,功能強大但不靈活,下面主要說下 TextView。
通過查看android.text.Html的源碼,發現Textview可以解析以下html標簽:
  • <a href="...">創建超文本鏈接
  • <b>黑體字
  • <big>字體加大
  • <blockquote>從兩邊縮進文本
  • <br>換行 插入換行符
  • <cite>引用,通常是斜體
  • <dfn>述語定義
  • <div align="...">用來排版大塊HTML段落,也用於格式化表
  • <em>強調文本(通常是斜體加黑體)
  • <font size="..." color="..." face="...">設置字體大小從1到7,顏色使用名字或RGB的十六進制值
  • <h1>至<h6>標題
  • <i>斜體字
  • <img src="...">圖片
  • <p>創建一個段落
  • <small>字體縮小
  • <strike>加刪除線
  • <strong>加重文本(通常是斜體加黑體)
  • <sub>下標字
  • <sup>上標字
  • <tt>打字機風格的字體
  • <u>下划線
除了默認的一些標簽,其還支持自定義標簽,詳見  http://www.cnblogs.com/mxgsa/archive/2012/11/15/2760256.html
Textview 通過HTML顯示本地及資源目錄圖片詳見  http://www.cnblogs.com/mxgsa/archive/2012/12/14/2816775.html
Textview 通過HTML顯示網絡圖片詳見  http://www.cnblogs.com/mxgsa/archive/2012/12/20/2823666.html

代碼
        
        
        
                
public class MainActivity extends Activity {
    private TextView tv2;
    private TextView tv3;
    private TextView tv4;
    private TextView tv5;
    private TextView tv6;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv2 = (TextView) findViewById(R.id.tv2);
        tv3 = (TextView) findViewById(R.id.tv3);
        tv4 = (TextView) findViewById(R.id.tv4);
        tv5 = (TextView) findViewById(R.id.tv5);
        tv6 = (TextView) findViewById(R.id.tv6);
        setHTML();
        setHTML2();
        setHTML3();
        setHTML4();
    }
    private void setHTML() {
        //若是僅在布局文件中引用,可以把HTML格式字符串寫到strings文件中,但要注意,很多很多格式都是不支持的!
        //getString(方法)得到的是沒有任何格式的字符串,所以若是在代碼中設置,就不能把HTML格式字符串寫到strings文件中
        tv2.setText(Html.fromHtml(getString(R.string.html_str)));
        //建議直接在代碼中定義並使用。注意雙引號要加轉義字符
        String html = "<html>|<i>  引用  </i>|<font color=\"#aabb00\">   values/  </font>|<font color=\"RED\">  strings  </font>|<strong>  中的  </strong>|<em>  html  </em>|<strike>  格式的  </strike>|<u>  字符串  </u>|<h3>  但是  </h3>|<big>  很多  </big>|<small>  格式  </small>|<b>  都  </b>| <sub>  不  </sub>|<tt>  支持  </tt>|</html>";
        tv3.setText(Html.fromHtml(html));
        String html2 = "<a href=\"http://www.baidu.com\">代碼中支持超鏈接</a>    <font color=\"#aabb00\">支持設置顏色</font>";
        tv4.setMovementMethod(LinkMovementMethod.getInstance());
        tv4.setText(Html.fromHtml(html2));
    }
    //顯示資源圖片
    private void setHTML2() {
        ImageGetter imageGetter = new ImageGetter() {
            public Drawable getDrawable(String source) {
                int rId = Integer.parseInt(source);
                Drawable drawable = getResources().getDrawable(rId);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        };
        String sText = "drawable中的圖片:<img src=\"" + R.drawable.ic_launcher + "\" />";
        tv5.setText(Html.fromHtml(sText, imageGetter, null));
    }
    //顯示本地圖片  
    private void setHTML3() {
        ImageGetter imageGetter = new ImageGetter() {
            public Drawable getDrawable(String source) {
                Drawable drawable = Drawable.createFromPath(source);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        };
        String sText = "本地圖片:<img src=\"/mnt/sdcard/temp/1.jpg\" />";
        try {
            tv6.setText(Html.fromHtml(sText, imageGetter, null));
        } catch (Exception e) {
        }
    }
    //顯示網路圖片
    private void setHTML4() {
        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;
            }
        };
        //tv7.setText(Html.fromHtml(sText1, imageGetter, null));
    }
}

布局
        
        
        
                

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical"
    android:padding="10dp" >
    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/html_str"
        android:textColor="#00f" />
    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#f0f" />
    <TextView
        android:id="@+id/tv3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#0ff" />
    <TextView
        android:id="@+id/tv4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#0f0" />
    <TextView
        android:id="@+id/tv5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#00f" />
    <TextView
        android:id="@+id/tv6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#880" />
</LinearLayout>

<string name="html_str"><html>|<i>  引用  </i>|<font color="#aabb00">   values/  </font>|<font color="RED">  strings  </font>|<strong>  中的  </strong>|<em>  html  </em>|<strike>  格式的  </strike>|<u>  字符串  </u>|<h3>  但是  </h3>|<big>  很多  </big>|<small>  格式  </small>|<b>  都  </b><sub>  不  </sub>|<tt>  支持  </tt>|</html></string>






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM