1. 程式人生 > >[Android開發]自定義View之TextView區域性操作View-SpanTextView

[Android開發]自定義View之TextView區域性操作View-SpanTextView

一、功能效果圖

Android TextView的區域性操作Span封裝View,支援縮略顯示、區域性點選、區域性格式設定、圖片插入替換等等

這裡寫圖片描述

二、簡單使用

TextView需要區域性操作:點選某些區域性文字的事件、顏色、大小、下劃線、指定位置插入圖片、新增圖片等等,如果沒經過封裝,你需要在activty上寫一堆的view操作程式碼。

簡單封裝一下之後,我在TextView要設定第3-5的字母點選事件 和 “連結1”字元點選事件,程式碼只需要如下

        //設定點選事件
        tvTest.setSpanLink("連結1",SIGN_ONE,false,Color.GREEN);
        tvTest.setSpanLink("連結2"
,SIGN_TWO,false); tvTest.setSpanLink("連結3",SIGN_THREE); //點選事件回撥監聽 tvTest.setOnLinkClickListener(new SpanTextView.onLinkClickListener() { @Override public void onLinkClick(View view, String text, String sign) { String toast = ""; switch
(sign){ case SIGN_ONE: toast = "連結1"; break; case SIGN_TWO: toast = "連結2"; break; case SIGN_THREE: toast = "連結3"; break
; } Toast.makeText(MainActivity.this,"點選了"+toast,Toast.LENGTH_SHORT).show(); Log.e(TAG, "點選了"+toast); } });

又例如替換圖片,插入圖片,程式碼只需要如下:

        //新增圖片到最前面,文字的高度
        tvTest.addImageToFirst(R.drawable.one, SpanTextView.TEXT_SIZE);

        //新增圖片到中間(中間新增的後面)
        tvTest.setImage(R.drawable.two, "中間新增", SpanTextView.AFTER_IMAGE);

        //新增圖片到最後面
        tvTest.addImageToLast(R.drawable.four);

        //替換文字為圖片
        //tvTest.setImage(R.drawable.three,"圖片標識", SpanTextView.REPLACE_IMAGE);
        tvTest.replaceTextToImage("圖片標識",R.drawable.three);

又例如其他操作 背景、顏色、下劃線等等:

        //設定文字大小
        tvTest.setSpanTextSize("大小",30);
        //設定文字背景
        tvTest.setSpanTextBack("普通背景", Color.BLUE);
        //設定文字圓角背景
        tvTest.setSpanTextBack("圓角背景", Color.GREEN,10);
        //設定文字顏色
        tvTest.setSpanTextColor("顏色",Color.RED);
        //設定文字下劃線
        tvTest.setUnderLine("下劃線",true);


又例如設定省略文字:

        //設定省略文字,只顯示100個
        tvTestTwo.setOmit(100);

還有其他的功能,具體請檢視原始碼方法

三、思路

思路比較簡單,就是把所有的span操作都放在了父View,向外公開一個個簡單的方法去使用。

圖片支援插入、替換、居中、可設定寬高。

封裝了一些常用的,如果你需要的功能封裝裡面沒有,你可以使用下面的程式碼進行設定Span

//設定其他的Span
//自定義設定Span
tvTest.setSpann(tvTest.createSpan(tvTest.getText(), new TypefaceSpan("sans-serif"), 1, 5));

四、程式碼