歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發教程:讓 TextView 的事件響應支持 Intent

Android開發教程:讓 TextView 的事件響應支持 Intent

日期:2017/3/1 11:11:28   编辑:Linux編程

按這一篇(http://www.linuxidc.com/Linux/2011-10/45649.htm)的方式可以給 TextView 加上事件響應,然而僅限於 web、email、phone、map等幾種,如果希望在點擊後跳轉到自己的 Activity 要怎麼實現呢?看代碼吧!

這是 Activity 代碼:

  1. @Override
  2. public void onCreate(Bundle icicle) {
  3. super.onCreate(icicle);
  4. linkify = new LinkifyUtil(this);
  5. Intent intent = new Intent("com.example.Android.note.ADD");
  6. intent.setData(Uri.parse("content://com.example.android.note/item"));
  7. linkify.addIntentLink(intent, (TextView) findViewById(R.id.tv_new_item));
  8. }

這是 LinkifyUtil 類:

  1. package com.example.android.note.util;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.text.SpannableString;
  5. import android.text.Spanned;
  6. import android.text.method.LinkMovementMethod;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.TextView;
  10. /**
  11. *
  12. * @author eidolon
  13. */
  14. public class LinkifyUtil {
  15. private final Activity currentActivity;
  16. public LinkifyUtil(Activity activity) {
  17. this.currentActivity = activity;
  18. }
  19. public void addIntentLink(final Intent intent, final TextView view, final int start, final int end) {
  20. CharSequence source = view.getText();
  21. if (source instanceof Spanned) {
  22. IntentSpan[] spans = ((Spanned) source).getSpans(start, end, IntentSpan.class);
  23. if (spans.length > 0) {
  24. return;
  25. }
  26. }
  27. SpannableString spannableString = new SpannableString(source);
  28. spannableString.setSpan(new IntentSpan(new OnClickListener() {
  29. public void onClick(View view) {
  30. currentActivity.startActivity(intent);
  31. }
  32. }), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  33. view.setText(spannableString);
  34. view.setMovementMethod(LinkMovementMethod.getInstance());
  35. }
  36. public void addIntentLink(final Intent intent, final TextView view) {
  37. addIntentLink(intent, view, 0, view.getText().toString().length());
  38. }
  39. }

最後是 IntentSpan 類:

  1. package com.example.android.note.util;
  2. import android.text.style.ClickableSpan;
  3. import android.view.View;
  4. import android.view.View.OnClickListener;
  5. /**
  6. *
  7. * @author eidolon
  8. */
  9. public class IntentSpan extends ClickableSpan {
  10. private final OnClickListener listener;
  11. public IntentSpan(View.OnClickListener listener) {
  12. this.listener = listener;
  13. }
  14. @Override
  15. public void onClick(View view) {
  16. listener.onClick(view);
  17. }
  18. }
Copyright © Linux教程網 All Rights Reserved