TextView如何使用SpannableString設(shè)置復(fù)合文本

小編給大家分享一下TextView如何使用SpannableString設(shè)置復(fù)合文本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的鳳泉網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

一、簡(jiǎn)介

TextView使用SpannableString設(shè)置復(fù)合文本
TextView通常用來顯示普通文本,但是有時(shí)候需要對(duì)其中某些文本進(jìn)行樣式、事件方面的設(shè)置。Android系統(tǒng)通過SpannableString類來對(duì)指定文本進(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 絕對(duì)大?。ㄎ谋咀煮w)
11、DynamicDrawableSpan 設(shè)置圖片,基于文本基線或底部對(duì)齊。
12、ImageSpan 圖片
13、RelativeSizeSpan 相對(duì)大?。ㄎ谋咀煮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 文本超鏈接

TextView如何使用SpannableString設(shè)置復(fù)合文本

 SpannableString的類架構(gòu)(部分)

二、方法

1)用SpannableString給TextView對(duì)象設(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類型對(duì)象

SpannableString spannableString=new SpannableString(text);

2、對(duì)SpannableString對(duì)象執(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í)例

效果圖

TextView如何使用SpannableString設(shè)置復(fù)合文本

點(diǎn)擊之后出現(xiàn)

TextView如何使用SpannableString設(shè)置復(fù)合文本

代碼:

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對(duì)象設(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類型對(duì)象
     * 2、對(duì)SpannableString對(duì)象執(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>

以上是“TextView如何使用SpannableString設(shè)置復(fù)合文本”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標(biāo)題:TextView如何使用SpannableString設(shè)置復(fù)合文本
路徑分享:http://muchs.cn/article18/ihchgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站網(wǎng)站策劃、域名注冊(cè)、外貿(mào)建站、小程序開發(fā)、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)