SpannableString,多個textview合為一個,還可以為TextView新增圖片
最近產品提出一個需求,就是模仿微信朋友圈,然後就想怎麼做,本文主要來講的是SpannableString,關於朋友圈設計的其它知識點就不說了。其實用起來很簡單,難搞的地方就是位置的計算,一不小心就會角標越界,接下來會說一下SpannableString的常用的用法。
為textview新增文字和圖片。
String content = "小凡送給主播跑車3個";
SpannableString sInfo = new SpannableString(content);
sInfo.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.text_white)),content.length()-4, content.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
這是給textview設定字型顏色,ForegroundColorSpan顧名思義就是設定背景色,構造器中的第一個引數是要設定的字型顏色,第二個引數是從某個位置開始,第三個引數是從某個位置結束,第四個引數的意思是下面自己翻譯一下。
/** * Spans of type SPAN_EXCLUSIVE_EXCLUSIVE do not expand * to include text inserted at either their starting or ending point.接著就是給textview新增圖片,* They can never have a length of 0 and are automatically removed * from the buffer if all the text they cover is removed. */
CustomImageSpan imageSpan = new CustomImageSpan(goodsDrawable);新增圖片需要用到這個類CustomImageSpan,構造器中的引數是Drawable,也就是你要設定的圖片,得到CustomImageSpan的物件後,sInfo.setSpan(imageSpan,content.length() + 1, content.length() + 2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);還是呼叫上面的方法,這次傳的引數除了第一個,其它三個都是一樣的,意思也是一樣的,第一個引數變為了CustomImageSpan的物件,這樣就把圖片新增到了你的textview的最後面了,也就是(小凡送給主播跑車3個+圖片)。
為textview上不同的文字位置新增點選事件。
String content = "小凡送給主播跑車3個";
SpannableString sInfo = new SpannableString(content);
sInfo.setSpan(
new ClickableSpan() { @Override public void onClick(View view) { //這裡就是點選事件了,可以在這裡處理你的點選事件 } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(mContext.getResources().getColor(R.color.text_red)); ds.setUnderlineText(false); } }, content.length()-4, comment.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
其實和上面新增文字顏色和圖片是一樣的,只是第一個引數不一樣,第一個引數變為了ClickableSpan的物件,第二個引數是點選事件的起始位置,第三個引數是點選事件的結束位置,也就是這兩個引數就設定了點選事件的區域.
常用的也就這些用法了,以後遇到別的用法再補充。
相關推薦
SpannableString,多個textview合為一個,還可以為TextView新增圖片
最近產品提出一個需求,就是模仿微信朋友圈,然後就想怎麼做,本文主要來講的是SpannableString,關於朋友圈設計的其它知識點就不說了。其實用起來很簡單,難搞的地方就是位置的計算,一不小心就會角標越界,接下來會說一下SpannableString的常用的
多個視訊怎麼合成一個,什麼合併視訊軟體好用
視訊的剪輯和合成是使用較多的一個功能,平時自己錄製視訊可能都會分享到社交平臺上,然而在分享之前,我們必然會做很多的處理,比如濾鏡,美顏,分割,合成等等的操作,前兩者很簡單,那怎麼將錄製的幾個視訊合成一個呢?可能很多朋友都還不知道該怎麼解決這一問題,一起來看看多個視訊怎麼合成一個,什麼合併視訊軟體好用吧!1、第
Python + Appium 【已解決】driver(session)在多個class之間復用,執行完一個類的用例,再次執行下個類的用例時不需要初始化
nic bject config com appium client lee session ted py文件的名稱為:appium_config.py 中的寫法如下 # coding=UTF-8 ‘‘‘ Created on 2017.1.13 @author: Lu
js 一個或多個一維數組,算出元素之間相互組合的所有情況
urn each pre 相互 get function post data nta // 數據源 var target = { state1: [‘1‘, ‘2‘], state2: [‘01‘, ‘02‘, ‘03‘],
合並多個cv::Mat類型,即合並多個圖片的接口
區域 使用 depth left img style return urn 創建 1、 cv::Mat get_merage_image(cv::Mat cur_frame) { cv::Mat image_one=cur_frame; cv::Mat image_
在linux系統下把多個終端合並在一個窗口
多少 img 打開 就會 組合 分享圖片 csdn linux系統 https 用正常的方式打開一個終端。 2.使用組合鍵 ctrl+shift+t , 這時就在同一個窗口中打開了另一個終端,當然再按一次ctrl+shift+t,會再生成一個,需要多少了大家可以自行
JavaScript多個h5播放器video,點擊一個播放其他暫停
html itl file dev elements tex oct () utf <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
近期處理多個Highcharts圖標時,碰到重復操作,所以編寫了一個流程控制器
null sql 控制 lin end created 格式 har 合並數組 HTML選擇頁面 第一部分:<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/9/8 * Tim
一個tomcat部署多個專案(同埠,多專案,不同訪問路徑)
使用tomcat的自動部署。(適用於檔案和war包,不需要重啟tomcat服務) 自定義web部署檔案。(只適用於檔案形式的,需要重啟tomcat服務) 一,自動部署 步驟: 瀏覽器輸入127.0.0.1:8080(如果你安裝時,改了埠的話,更改成你設定的埠),
如何把多個pdf合並成一個pdf
功能 shadow png 點擊 方框 狀態 ges 電腦 完整 伴隨著工作的日積月累,電腦上零散的PDF文件也越來越多,經常有一些同一類型的文件分成好幾個PDF文件,大家都想將相同的文件整理成一份PDF文件,這樣不僅不會丟失某一部分文件,也方便文件的查找,那麽如何把多個P
一個伺服器搭多個tomcat導致session丟失,或者同一個IP不同埠,多個應用的session會衝突解決方法
一個伺服器上搭建了多個tomcat或者weblogic,埠不一樣,同時啟動訪問時session丟失。如:A,B兩個服務,在瀏覽器中登入訪問A後,當前開啟的瀏覽器上在開一個選項卡訪問B服務後,回過來點選訪問A時session丟失,需要重新登入A才可以訪問。經過資料查詢,發
當一個標籤裡面有多個class屬性的時候,如何判斷是否有哪個屬性
如圖,選中的那一行<button>標籤,裡面的class值,有兩個,一個是startTime還有一個是chooseButton,我需要判斷是否含有chooseButton這個class,再進行相應的操作,當只有一個一個class的時候,我們可以通過$(this).attr('cla
一個頁面存在多個echarts圖形,resize失效,圖形自適應視窗大小
當一個頁面有兩個echarts圖形,想要頁面大小發生改變,重新繪製圖形如果還寫為 myChart.se
python 中,如何在一個函式中呼叫另一個函式返回的多個值中的一個?
在一個函式中呼叫另一個函式返回的多個值中的一個 首先,定義了一個函式 。 程式碼如下: def createDataSet(): group = array([[1.0,1.1],[1
兩個list合併為一個,缺少的填0,並按其中一個的順序排列
with cte as ( select id,1 level,name from ts_dictionary where parentid=''63" union all select g.id,level +1,g.name from
編寫一個字串(a~z)過濾函式,對於字形符串中出現的多個相同的字形符,將非首次出現的字元過濾掉
public class StringFilter { public static String stringFilter(String input) { boolean[] bools = new boolean[26]; for (int i = 0; i <
資料讀取之key(多個欄位決定一個key),value模式
-- isMaxLevel, updateStarDict, startLevel, endLevel function ShipService:getWeaponUpdateStarDictInner( shipDictId, weaponLevel, weaponIn
多個數組合併成一個,多個物件合併成一個
多個數組合併成一個 ver arrry=arr1.concat(arr2).concat(arr3).concat(arr4).concat(arr4) 兩個物件合併成一個。 let para={name:'1'};
JavaScript多個h5播放器video,點選一個播放其他暫停
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti
遞迴演算法(求n的加法組合,將一個整數拆分成多個整數相加的形式, O(N)時間,O(N)空間)
網上的多種解法比較複雜,本文用遞迴方法,22行程式碼搞定。時間和空間複雜度已經降到最低! 第三版:加入創作思路。 這個函式的主要功能就是輸出所有組合。既然是輸出所有的組合,那就意味著內部有一個遍歷所有組合的過程。既然是遍歷,而且是O(N)時間,那就說明這個遍歷是按照某種輸出次序,從“第一個組合”遍歷到