`
hyongbai
  • 浏览: 15263 次
文章分类
社区版块
存档分类
最新评论

TextView url 识别,Spannable 使用 电话 网址 邮件

 
阅读更多
首先看一个链接文本执行流程的大概示意图





看了这个流程应该对大概URL, Email等的链接实现有所了解了,所以直接看代码把


Java代码
  1. TextViewview1=(TextView)findViewById(R.id.view1);
  2. TextViewview2=(TextView)findViewById(R.id.view2);
  3. TextViewview3=(TextView)findViewById(R.id.view3);
  4. TextViewview4=(TextView)findViewById(R.id.view4);
  5. TextViewview5=(TextView)findViewById(R.id.view5);
  6. TextViewview6=(TextView)findViewById(R.id.view6);
  7. SpannableStringtext1=newSpannableString("red");
  8. text1.setSpan(newForegroundColorSpan(Color.RED),0,3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  9. view1.setText(text1);
  10. SpannableStringtext2=newSpannableString("green");
  11. text2.setSpan(newBackgroundColorSpan(Color.GREEN),0,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  12. view2.setText(text2);
  13. SpannableStringtext3=newSpannableString("iambold");
  14. text3.setSpan(newStyleSpan(Typeface.BOLD_ITALIC),5,9,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  15. view3.setText(text3);
  16. SpannableStringtext4=newSpannableString("underline");
  17. text4.setSpan(newUnderlineSpan(),0,9,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  18. view4.setText(text4);
  19. SpannableStringtext5=newSpannableString("deleteline");
  20. text5.setSpan(newStrikethroughSpan(),7,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  21. view5.setText(text5);
  22. SpannableStringtext6=newSpannableString("makeacall");
  23. text6.setSpan(newURLSpan("tel:123456789"),7,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  24. view6.setText(text6);
  25. view6.setMovementMethod(LinkMovementMethod.getInstance());
  26. //还有ImageSpan等






XML布局文件

Java代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schem<wbr>as.android.c<wbr>om/apk/res/a<wbr>ndroid</wbr></wbr></wbr>"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:orientation="vertical"
  7. >
  8. <TextView
  9. android:id="@+id/view1"
  10. android:layout_width="wrap_content"
  11. android:layout_height="50sp"
  12. android:gravity="center"
  13. />
  14. <TextView
  15. android:id="@+id/view2"
  16. android:layout_width="wrap_content"
  17. android:layout_height="50sp"
  18. android:gravity="center"
  19. />
  20. <TextView
  21. android:id="@+id/view3"
  22. android:layout_width="wrap_content"
  23. android:layout_height="50sp"
  24. android:gravity="center"
  25. />
  26. <TextView
  27. android:id="@+id/view4"
  28. android:layout_width="wrap_content"
  29. android:layout_height="50sp"
  30. android:gravity="center"
  31. />
  32. <TextView
  33. android:id="@+id/view5"
  34. android:layout_width="wrap_content"
  35. android:layout_height="50sp"
  36. android:gravity="center"
  37. />
  38. <TextView
  39. android:id="@+id/view6"
  40. android:layout_width="wrap_content"
  41. android:layout_height="50sp"
  42. android:gravity="center"
  43. />
  44. </LinearLayout>



默认的链接在点击时,只会跳转到响应的View,如点击URL时,打开浏览器,点击电话号码时,打开拨号界面。 如果我们要在点击某连接时,跳转到某个Activity呢。

URLSpan继承自ClickableSpan,所以我们的出发点也是这个类,然后重写其中的onClick


Java代码
  1. publicclassIntentSpanextendsClickableSpanimplementsParcelableSpan{
  2. privateIntentmIntent;
  3. publicIntentSpan(IntenttoActivity){
  4. mIntent=toActivity;
  5. }
  6. @Override
  7. publicvoidonClick(ViewsourceView){
  8. Contextcontext=sourceView.getContext();
  9. context.startActivity(mIntent);
  10. }
  11. @Override
  12. publicintgetSpanTypeId(){
  13. return100;
  14. }
  15. @Override
  16. publicintdescribeContents(){
  17. return0;
  18. }
  19. @Override
  20. publicvoidwriteToParcel(Parceldest,intflag){
  21. //don'twritetoparcel
  22. }
  23. publicIntentgetIntent(){
  24. returnmIntent;
  25. }
  26. }



使用的话和URLSpan差不多


Java代码
  1. SpannableStringtext6=newSpannableString("makeacall");
  2. Intentintent=newIntent(context,SomActivity.class);
  3. text6.setSpan(newIntentSpan(intent),7,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. view6.setText(text6);
  5. view6.setMovementMethod(LinkMovementMethod.getInstance());
分享到:
评论

相关推荐

    TextView的xml属性(Android)

    `android:autoLink`属性允许`TextView`自动识别并链接化特定类型的文本,如网址、电子邮件地址、电话号码和地图地址。通过设置不同的常量,可以开启不同的链接类型。例如: - `none`:默认值,不进行任何链接。 -...

    TextView实现超链接的四种方式

    这个属性可以自动识别文本中的URL、电话号码、电子邮件地址等,并将其转化为可点击的链接。在XML布局文件中设置如下: ```xml &lt;TextView android:id="@+id/textView" android:layout_width="wrap_content" ...

    在TextView中添加超链接

    textView.setText(spannable); textView.setMovementMethod(LinkMovementMethod.getInstance()); ``` `LinkMovementMethod.getInstance()`使得TextView能识别并处理链接点击。 3. **自定义MovementMethod** ...

    Retorfit的简单使用get请求,TextView的文本超链接识别源码

    本文将详细介绍如何使用Retrofit进行简单的GET请求,并结合TextView实现文本中的超链接识别。 ### Retrofit简介 Retrofit是由Square公司开发的一款Java和Kotlin的网络请求库,它通过注解的方式简化了HTTP接口的...

    A0207TextView的使用1

    - `android:autoLink`:设置当文本为URL链接、电子邮件地址、电话号码或地图地址时,是否将其显示为可点击的链接。可选值包括"none"(关闭)、"web"(URL)、"email"(电子邮件)、"phone"(电话)、"map"(地图)...

    textview网页链接

    textView.setText(spannable); ``` 在这个例子中,我们创建了一个自定义的`ClickSpan`,覆盖了`onClick()`方法来处理点击事件,然后将其应用到文本上。这样,当用户点击链接时,就会启动一个浏览器并打开指定的URL。...

    TextView超链接自定义样式

    默认情况下,`TextView`会识别文本中的URL并自动将其设置为可点击的超链接,但其样式是系统默认的蓝色文字和下划线。若要自定义这些样式,我们可以采取以下方法: 1. **使用SpannableString**: 我们可以使用`...

    TextView

    3. **链接处理**:TextView可以识别并响应URL、电话号码等特殊格式的文本,实现点击跳转或触发其他操作。 4. **输入法交互**:当TextView具有焦点且设置为可编辑时,如何与软键盘交互,处理用户输入。 5. **动画与...

    textView属性

    使用`android:autoLink`属性可以将文本中的URL、电话号码、邮箱等自动识别为链接,也可以通过`Linkify`类手动添加链接。 7. **多色文本** 通过`SpannableString`和`ForegroundColorSpan`等 Span 对象,可以创建...

    textview完美展示html格式代码

    在Android开发中,`TextView` 是一个非常常用的控件,用于显示单行或多行文本。然而,当需要在`TextView`中展示HTML格式的内容时,就需要进行一些特殊处理,以便让`TextView`能够理解并正确渲染HTML标签。本文将深入...

    android_TextView属性详解

    - `email`:仅识别电子邮件地址。 - `phone`:仅识别电话号码。 - `map`:仅识别地图地址。 - `all`:识别所有类型的链接。 2. **android:autoText** - **描述**:如果设置,则自动执行输入值的拼写纠正。...

    TextView自定义字体,风格,超链接等效果

    独立样式,即在一个TextView中对不同部分应用不同的样式,可以使用`CharacterStyle`的子类,如`ForegroundColorSpan`、`BackgroundColorSpan`、`BoldSpan`等。例如,将部分文字设为蓝色并加粗: ```java ...

    android_api_textview

    - **描述**:设置文本中的URL链接、email、电话号码或地图地址等是否应该被识别为可点击的链接。 - **可选值**:`none`, `web`, `email`, `phone`, `map`, `all` - **示例**:设置`android:autoLink="web"`可以让...

    TextView属性详解

    - **`android:autoLink`**:此属性用于识别文本中的URL链接、电子邮件地址、电话号码或地图地址,并自动将其转换为可点击的链接。支持的值包括`none`(不转换任何链接)、`web`(仅转换URL链接)、`email`(仅转换...

    WebView跳转TextView中的超链接

    这个功能实现起来并不复杂,主要涉及到了TextView的`movementMethod`属性和`Linkify`类的使用。 首先,让我们了解`movementMethod`属性。TextView的`movementMethod`决定了文本如何响应用户的触摸事件。默认情况下...

    TextView属性大全

    - `web`: 将文本中的URL识别为可点击的链接。 - `email`: 将文本中的电子邮件地址识别为可点击的链接。 - `phone`: 将文本中的电话号码识别为可点击的链接。 - `map`: 将文本中的地址信息识别为可点击的地图链接...

    Android TextView中文字设置超链接、颜色、字体

    当我们在TextView的文本中插入URL时,可以使用`android:autoLink="web"`属性,让系统自动识别并转换为可点击的超链接。但这种方法可能无法满足所有需求,例如自定义链接样式。此时,我们可以使用`SpannableString`和...

Global site tag (gtag.js) - Google Analytics