TextView使用SpannableString設(shè)置復(fù)合文本 SpannableString實(shí)現(xiàn)TextView的鏈接效果
一、簡介
TextView使用SpannableString設(shè)置復(fù)合文本
TextView通常用來顯示普通文本,但是有時(shí)候需要對其中某些文本進(jìn)行樣式、事件方面的設(shè)置。Android系統(tǒng)通過SpannableString類來對指定文本進(jìn)行相關(guān)處理,具體有以下功能:
1、BackgroundColorSpan 背景色
2、ClickableSpan 文本可點(diǎn)擊,有點(diǎn)擊事件
3、ForegroundColorSpan 文本顏色(前景色)
4、MaskFilterSpan 修飾效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)
5、MetricAffectingSpan 父類,一般不用
6、RasterizerSpan 光柵效果
7、StrikethroughSpan 刪除線(中劃線)
8、SuggestionSpan 相當(dāng)于占位符
9、UnderlineSpan 下劃線
10、AbsoluteSizeSpan 絕對大?。ㄎ谋咀煮w)
11、DynamicDrawableSpan 設(shè)置圖片,基于文本基線或底部對齊。
12、ImageSpan 圖片
13、RelativeSizeSpan 相對大?。ㄎ谋咀煮w)
14、ReplacementSpan 父類,一般不用
15、ScaleXSpan 基于x軸縮放
16、StyleSpan 字體樣式:粗體、斜體等
17、SubscriptSpan 下標(biāo)(數(shù)學(xué)公式會(huì)用到)
18、SuperscriptSpan 上標(biāo)(數(shù)學(xué)公式會(huì)用到)
19、TextAppearanceSpan 文本外貌(包括字體、大小、樣式和顏色)
20、TypefaceSpan 文本字體
21、URLSpan 文本超鏈接
SpannableString的類架構(gòu)(部分)
二、方法
1)用SpannableString給TextView對象設(shè)置link點(diǎn)擊事件方法
第一步:設(shè)置string內(nèi)容
String text="點(diǎn)擊我打開activity";
第二步:為string內(nèi)容添加各種屬性,
在這里是擁有SpannableString的ClickableSpan屬性
SpannableString spannableString=new SpannableString(text);
spannableString.setSpan(new ClickableSpan() {中間省略O(shè)nclic方法}, 3, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
第三步:在TextView中添加上面設(shè)置好的文本內(nèi)容
tv_spannableString.setText(spannableString);
第四步:設(shè)置鼠標(biāo)點(diǎn)擊響應(yīng)事件
這一步在html方法中必須要,現(xiàn)在沒有指定autoLink,感覺也是必須要,沒這句話編譯出錯(cuò)
spannableString.setSpan(new ClickableSpan() {中間省略O(shè)nclic方法}, 3, text.length(),
tv_spannableString.setMovementMethod(LinkMovementMethod.getInstance());
2)SpannableString為控件設(shè)置各種屬性的方法
1、將string類型轉(zhuǎn)化為SpannableString類型對象
SpannableString spannableString=new SpannableString(text);
2、對SpannableString對象執(zhí)行setSpan方法
spannableString.setSpan(new ClickableSpan() {中間省略O(shè)nclic方法}, 3, text.length(), }, 3, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
說明,設(shè)置點(diǎn)擊事件是使用的ClickableSpan() ,如果想要設(shè)置其他效果就用其它的好了,
就是最上面列舉的那么多
三、代碼實(shí)例
效果圖
點(diǎn)擊之后出現(xiàn)
代碼:
fry.ActivityDemo3
package fry; import java.lang.reflect.Field; import com.example.textViewDemo1.R; import com.example.textViewDemo1.R.id; import android.app.Activity; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Html; import android.text.Html.ImageGetter; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.view.View; import android.widget.TextView; public class ActivityDemo3 extends Activity{ private TextView tv_spannableString; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity03); setTitle("TextViewDemo3"); tv_spannableString=(TextView) findViewById(R.id.tv_spannableString); /* * 用SpannableString給TextView對象設(shè)置link點(diǎn)擊事件方法 * 第一步:設(shè)置string內(nèi)容 */ String text="點(diǎn)擊我打開activity"; /* * 第二步:為string內(nèi)容添加各種屬性, * 在這里是擁有SpannableString的ClickableSpan屬性 */ /* * SpannableString為控件設(shè)置各種屬性的方法 * 1、將string類型轉(zhuǎn)化為SpannableString類型對象 * 2、對SpannableString對象執(zhí)行setSpan方法 */ SpannableString spannableString=new SpannableString(text); spannableString.setSpan(new ClickableSpan() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(ActivityDemo3.this,ActivityDemo2.class); startActivity(intent); } }, 3, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); /* * Spanned.SPAN_EXCLUSIVE_EXCLUSIVE * exclusive是 獨(dú)有的 意思 * 這個(gè)屬性即是效果獨(dú)有,不影響前后 */ /* * 第三步:在TextView中添加上面設(shè)置好的文本內(nèi)容 */ tv_spannableString.setText(spannableString); /* * 第四步:設(shè)置鼠標(biāo)點(diǎn)擊響應(yīng)事件 * 這一步在html方法中必須要,現(xiàn)在沒有指定autoLink,感覺也是必須要 * 沒這句話編譯出錯(cuò) */ tv_spannableString.setMovementMethod(LinkMovementMethod.getInstance()); } }
/textViewDemo1/res/layout/activity03.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_spannableString" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android中的SpannableString與SpannableStringBuilder詳解
- Android利用SpannableString實(shí)現(xiàn)格式化微博內(nèi)容
- Android SpannableString設(shè)置超鏈接、顏色、字體等屬性
- Android TextView中文字通過SpannableString設(shè)置屬性用法示例
- Android TextView使用SpannableString設(shè)置復(fù)合文本的方法詳解
- Android RichText 讓Textview輕松的支持富文本(圖像ImageSpan、點(diǎn)擊效果等等類似QQ微信聊天)
- 利用SpannableString和ImageSpan在textview中插入圖片的方法
相關(guān)文章
Android Studio開發(fā)環(huán)境搭建教程詳解
android studio是最近比較火的開發(fā),那么android studio開發(fā)環(huán)境怎么搭建呢?下面通過本文給大家記錄下Android Studio開發(fā)環(huán)境搭建教程詳解,需要的朋友參考下吧2017-11-11Android平臺(tái)預(yù)置GMS包后關(guān)機(jī)鬧鐘失效問題及解決方法
這篇文章主要介紹了Android平臺(tái)預(yù)置GMS包后,關(guān)機(jī)鬧鐘失效,本文給大家分享問題原因及解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09詳解Android獲取系統(tǒng)內(nèi)核版本的方法與實(shí)現(xiàn)代碼
這篇文章主要介紹了詳解Android獲取系統(tǒng)內(nèi)核版本的方法與實(shí)現(xiàn)代碼的相關(guān)資料,這里提供了具體實(shí)現(xiàn)獲取內(nèi)核的方法,需要的朋友可以參考下2017-07-07Android?Gradle?插件自定義Plugin實(shí)現(xiàn)注意事項(xiàng)
這篇文章主要介紹了Android?Gradle?插件自定義Plugin實(shí)現(xiàn)注意事項(xiàng),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-06-06淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路
本文主要介紹 淺談Service Manager成為Android進(jìn)程間通信(IPC)機(jī)制Binder守護(hù)進(jìn)程之路,這里詳細(xì)介紹了相關(guān)Binder的資料,幫助大家理解學(xué)習(xí)Android 源碼Binder通信機(jī)制,有興趣的小伙伴可以參考下2016-08-08Android提高之BroadcastReceiver實(shí)例詳解
這篇文章主要介紹了Android的BroadcastReceiver用法,在Android的項(xiàng)目開發(fā)中是比較實(shí)用的功能,需要的朋友可以參考下2014-08-08Android如何基于坐標(biāo)對View進(jìn)行模擬點(diǎn)擊事件詳解
這篇文章主要給大家介紹了關(guān)于Android如何基于坐標(biāo)對View進(jìn)行模擬點(diǎn)擊事件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03簡單實(shí)現(xiàn)Android端搜索框示例詳解
這篇文章主要為大家介紹了簡單實(shí)現(xiàn)Android端搜索框示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11