`
- 浏览:
15263 次
-
TextView url 识别,Spannable 使用 电话 网址 邮件
首先看一个链接文本执行流程的大概示意图
看了这个流程应该对大概URL, Email等的链接实现有所了解了,所以直接看代码把
-
TextViewview1=(TextView)findViewById(R.id.view1);
-
TextViewview2=(TextView)findViewById(R.id.view2);
-
TextViewview3=(TextView)findViewById(R.id.view3);
-
TextViewview4=(TextView)findViewById(R.id.view4);
-
TextViewview5=(TextView)findViewById(R.id.view5);
-
TextViewview6=(TextView)findViewById(R.id.view6);
-
-
SpannableStringtext1=newSpannableString("red");
-
text1.setSpan(newForegroundColorSpan(Color.RED),0,3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view1.setText(text1);
-
-
SpannableStringtext2=newSpannableString("green");
-
text2.setSpan(newBackgroundColorSpan(Color.GREEN),0,5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view2.setText(text2);
-
-
SpannableStringtext3=newSpannableString("iambold");
-
text3.setSpan(newStyleSpan(Typeface.BOLD_ITALIC),5,9,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view3.setText(text3);
-
-
SpannableStringtext4=newSpannableString("underline");
-
text4.setSpan(newUnderlineSpan(),0,9,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view4.setText(text4);
-
-
SpannableStringtext5=newSpannableString("deleteline");
-
text5.setSpan(newStrikethroughSpan(),7,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view5.setText(text5);
-
-
SpannableStringtext6=newSpannableString("makeacall");
-
text6.setSpan(newURLSpan("tel:123456789"),7,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view6.setText(text6);
-
view6.setMovementMethod(LinkMovementMethod.getInstance());
-
-
XML布局文件
-
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayout
-
xmlns:android="http://schem<wbr>as.android.c<wbr>om/apk/res/a<wbr>ndroid</wbr></wbr></wbr>"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:orientation="vertical"
-
>
-
<TextView
-
android:id="@+id/view1"
-
android:layout_width="wrap_content"
-
android:layout_height="50sp"
-
android:gravity="center"
-
/>
-
<TextView
-
android:id="@+id/view2"
-
android:layout_width="wrap_content"
-
android:layout_height="50sp"
-
android:gravity="center"
-
/>
-
<TextView
-
android:id="@+id/view3"
-
android:layout_width="wrap_content"
-
android:layout_height="50sp"
-
android:gravity="center"
-
/>
-
<TextView
-
android:id="@+id/view4"
-
android:layout_width="wrap_content"
-
android:layout_height="50sp"
-
android:gravity="center"
-
/>
-
<TextView
-
android:id="@+id/view5"
-
android:layout_width="wrap_content"
-
android:layout_height="50sp"
-
android:gravity="center"
-
/>
-
<TextView
-
android:id="@+id/view6"
-
android:layout_width="wrap_content"
-
android:layout_height="50sp"
-
android:gravity="center"
-
/>
-
</LinearLayout>
-
默认的链接在点击时,只会跳转到响应的View,如点击URL时,打开浏览器,点击电话号码时,打开拨号界面。 如果我们要在点击某连接时,跳转到某个Activity呢。
URLSpan继承自ClickableSpan,所以我们的出发点也是这个类,然后重写其中的onClick
-
publicclassIntentSpanextendsClickableSpanimplementsParcelableSpan{
-
privateIntentmIntent;
-
-
publicIntentSpan(IntenttoActivity){
-
mIntent=toActivity;
-
}
-
-
@Override
-
publicvoidonClick(ViewsourceView){
-
Contextcontext=sourceView.getContext();
-
context.startActivity(mIntent);
-
}
-
-
@Override
-
publicintgetSpanTypeId(){
-
return100;
-
}
-
-
@Override
-
publicintdescribeContents(){
-
return0;
-
}
-
-
@Override
-
publicvoidwriteToParcel(Parceldest,intflag){
-
-
}
-
-
publicIntentgetIntent(){
-
returnmIntent;
-
}
-
}
-
使用的话和URLSpan差不多
-
SpannableStringtext6=newSpannableString("makeacall");
-
Intentintent=newIntent(context,SomActivity.class);
-
text6.setSpan(newIntentSpan(intent),7,11,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-
view6.setText(text6);
-
view6.setMovementMethod(LinkMovementMethod.getInstance());
-
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
`android:autoLink`属性允许`TextView`自动识别并链接化特定类型的文本,如网址、电子邮件地址、电话号码和地图地址。通过设置不同的常量,可以开启不同的链接类型。例如: - `none`:默认值,不进行任何链接。 -...
这个属性可以自动识别文本中的URL、电话号码、电子邮件地址等,并将其转化为可点击的链接。在XML布局文件中设置如下: ```xml <TextView android:id="@+id/textView" android:layout_width="wrap_content" ...
textView.setText(spannable); textView.setMovementMethod(LinkMovementMethod.getInstance()); ``` `LinkMovementMethod.getInstance()`使得TextView能识别并处理链接点击。 3. **自定义MovementMethod** ...
本文将详细介绍如何使用Retrofit进行简单的GET请求,并结合TextView实现文本中的超链接识别。 ### Retrofit简介 Retrofit是由Square公司开发的一款Java和Kotlin的网络请求库,它通过注解的方式简化了HTTP接口的...
- `android:autoLink`:设置当文本为URL链接、电子邮件地址、电话号码或地图地址时,是否将其显示为可点击的链接。可选值包括"none"(关闭)、"web"(URL)、"email"(电子邮件)、"phone"(电话)、"map"(地图)...
textView.setText(spannable); ``` 在这个例子中,我们创建了一个自定义的`ClickSpan`,覆盖了`onClick()`方法来处理点击事件,然后将其应用到文本上。这样,当用户点击链接时,就会启动一个浏览器并打开指定的URL。...
默认情况下,`TextView`会识别文本中的URL并自动将其设置为可点击的超链接,但其样式是系统默认的蓝色文字和下划线。若要自定义这些样式,我们可以采取以下方法: 1. **使用SpannableString**: 我们可以使用`...
3. **链接处理**:TextView可以识别并响应URL、电话号码等特殊格式的文本,实现点击跳转或触发其他操作。 4. **输入法交互**:当TextView具有焦点且设置为可编辑时,如何与软键盘交互,处理用户输入。 5. **动画与...
使用`android:autoLink`属性可以将文本中的URL、电话号码、邮箱等自动识别为链接,也可以通过`Linkify`类手动添加链接。 7. **多色文本** 通过`SpannableString`和`ForegroundColorSpan`等 Span 对象,可以创建...
在Android开发中,`TextView` 是一个非常常用的控件,用于显示单行或多行文本。然而,当需要在`TextView`中展示HTML格式的内容时,就需要进行一些特殊处理,以便让`TextView`能够理解并正确渲染HTML标签。本文将深入...
- `email`:仅识别电子邮件地址。 - `phone`:仅识别电话号码。 - `map`:仅识别地图地址。 - `all`:识别所有类型的链接。 2. **android:autoText** - **描述**:如果设置,则自动执行输入值的拼写纠正。...
独立样式,即在一个TextView中对不同部分应用不同的样式,可以使用`CharacterStyle`的子类,如`ForegroundColorSpan`、`BackgroundColorSpan`、`BoldSpan`等。例如,将部分文字设为蓝色并加粗: ```java ...
- **描述**:设置文本中的URL链接、email、电话号码或地图地址等是否应该被识别为可点击的链接。 - **可选值**:`none`, `web`, `email`, `phone`, `map`, `all` - **示例**:设置`android:autoLink="web"`可以让...
- **`android:autoLink`**:此属性用于识别文本中的URL链接、电子邮件地址、电话号码或地图地址,并自动将其转换为可点击的链接。支持的值包括`none`(不转换任何链接)、`web`(仅转换URL链接)、`email`(仅转换...
这个功能实现起来并不复杂,主要涉及到了TextView的`movementMethod`属性和`Linkify`类的使用。 首先,让我们了解`movementMethod`属性。TextView的`movementMethod`决定了文本如何响应用户的触摸事件。默认情况下...
- `web`: 将文本中的URL识别为可点击的链接。 - `email`: 将文本中的电子邮件地址识别为可点击的链接。 - `phone`: 将文本中的电话号码识别为可点击的链接。 - `map`: 将文本中的地址信息识别为可点击的地图链接...
当我们在TextView的文本中插入URL时,可以使用`android:autoLink="web"`属性,让系统自动识别并转换为可点击的超链接。但这种方法可能无法满足所有需求,例如自定义链接样式。此时,我们可以使用`SpannableString`和...