android 基礎知識二

Android TextView上響應部分文字的事件
運行結果如下:

20111010102814.jpg (4.72 KB, 下載次數: 0)

下載附件  保存到相冊

2012-10-12 16:51 上傳

   

20111010102830.jpg (4.77 KB, 下載次數: 0)

下載附件  保存到相冊

2012-10-12 16:51 上傳


TtActivity.java

  1. public class TtActivity extends Activity {
  2.     /* * Called when the activity is first created. */
  3.     private TextView tv;
  4.     static Context ctx = null;
  5.   
  6.     @Override
  7.     public void onCreate(Bundle savedInstanceState) {
  8.         super.onCreate(savedInstanceState);
  9.         setContentView(R.layout.main);
  10.         ctx = this;
  11.         tv = (TextView) findViewById(R.id.tv);
  12.         // String htmlLinkText=
  13.         // " <a href=\"http://www.android-study.com/\"><u>Android學習網</u></a>";
  14.         // tv.setText(Html.fromHtml(htmlLinkText));
  15.         tv.setMovementMethod(LinkMovementMethod.getInstance());
  16.         CharSequence text = tv.getText();
  17.         if (text instanceof Spannable) {
  18.             int end = text.length();
  19.             Spannable sp = (Spannable) tv.getText();
  20.             URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
  21.             SpannableStringBuilder style = new SpannableStringBuilder(text);
  22.             style.clearSpans(); // should clear old spans
  23.             for (URLSpan url : urls) {
  24.                 MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
  25.                 style.setSpan(myURLSpan, sp.getSpanStart(url),
  26.                         sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  27.             }
  28.             tv.setText(style);
  29.         }
  30.     }
  31.   
  32.     private static class MyURLSpan extends ClickableSpan {
  33.         private String mUrl;
  34.   
  35.         MyURLSpan(String url) {
  36.             mUrl = url;
  37.         }
  38.   
  39.         @Override
  40.         public void onClick(View widget) {
  41.             // TODO Auto-generated method stub
  42.             Toast.makeText(ctx, "" + mUrl, Toast.LENGTH_SHORT).show();
  43.         }
  44.     }
  45. }
複製代碼
main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent">
  6.     <TextView
  7.         android:id="@+id/tv"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="wrap_content"
  10.         android:text="@string/hello" />
  11. </LinearLayout>
複製代碼
strings.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.     <string name="hello">局部事件1  <a href="1" ><u>hello1</u></a>,事件2<a href="2" ><u>hello2</u></a></string>
  4.     <string name="app_name">Tt</string>
  5. </resources>
複製代碼
Android TextView中顯示HTML和圖片
如何在Android TextView中顯示<img src=""/> html標籤內的圖片,大家都知道,在TextView中顯示HTML內容的方法如下所示:

  1. [size=3]TextView description=(TextView)findViewById(R.id.description);
  2. description.setText(Html.fromHtml(item.getDescription()));[/size]
複製代碼
如果HTML中有圖片的話,顯示出來的圖片會被一個小框取代,那麼怎麼樣才能看到圖片呢?查看了一下API,android.text.Html還還有另一個方法:Html.fromHtml(String source,ImageGetter imageGetter,TagHandler tagHandler),這個方法使用如下所示:

  1. ImageGetter imgGetter = new Html.ImageGetter() {
  2.     public Drawable getDrawable(String source) {
  3.         Drawable drawable = null;
  4.         Log.d("Image Path", source);
  5.         URL url;
  6.         try {
  7.             url = new URL(source);
  8.             drawable = Drawable.createFromStream(url.openStream(), "");
  9.         }
  10.         catch (Exception e) {
  11.             return null;
  12.         }
  13.         drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
  14.         return drawable;
  15.     }
  16. };
  17. .........
  18. TextView description=(TextView)findViewById(R.id.description);
  19. description.setText(Html.fromHtml(item.getDescription(),imgGetter,null));
複製代碼
第二個參數TagHandler是處理HTML中的標籤的,比如說遇到某個標籤就把它替換爲….之類的操作都可以通過TagHandler來處理

最後我要說的是,如果你的圖片是從網絡上獲取的,那麼你一定不要用這種方法顯示一張圖片,因爲這是最垃圾的辦法,你的程序會經常被卡死。

建議您可以使用WebView來顯示HTML內容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章