日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

好用的Span(富文本)api

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 好用的Span(富文本)api 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 將一段文字中指定range的文字改變大小* @param range 要改變大小的文字的范圍 ps:你關注的${name}也關注了你喲 = 4..(name.length+4)* @param scale 縮放值,大于1,則比其他文字大;小于1,則比其他文字小;默認是1.5*/ fun CharSequence.toSizeSpan(range: IntRange, scale: Float = 1.5f): SpannableString =SpannableString(this).apply {setSpan(RelativeSizeSpan(scale),range.first,range.last,Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 將一段文字中指定range的文字改變大小*/ fun CharSequence.toTextSizeSpan(range: IntRange, dp: Int): SpannableString =SpannableString(this).apply {setSpan(AbsoluteSizeSpan(dp, true),range.first,range.last,Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 將一段文字中指定range的文字改變前景色* @param range 要改變前景色的文字的范圍* @param color 要改變的顏色,默認是紅色*/ fun CharSequence.toColorSpan(range: IntRange, color: Int = Color.RED): SpannableString =SpannableString(this).apply {setSpan(ForegroundColorSpan(color),range.first,range.last,Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 將一段文字中指定range的文字改變背景色* @param range 要改變背景色的文字的范圍* @param color 要改變的顏色,默認是紅色*/ fun CharSequence.toBackgroundColorSpan(range: IntRange, color: Int = Color.RED): SpannableString =SpannableString(this).apply {setSpan(BackgroundColorSpan(color),range.first,range.last,Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 將一段文字中指定range的文字添加刪除線* @param range 要添加刪除線的文字的范圍*/ fun CharSequence.toStrikeThrougthSpan(range: IntRange): SpannableString =SpannableString(this).apply {setSpan(StrikethroughSpan(), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 將一段文字中指定range的文字添加顏色和點擊事件* @param range 目標文字的范圍* @param isUnderlineText 是否加上下劃線* 注意:需要同時給tv設置下面兩個* tv.movementMethod = LinkMovementMethod.getInstance()//使點擊生效* tv.highlightColor = R.color.transparent.toColor()//使點擊相應位置后不留下背景色(透明)*/ inline fun CharSequence.toClickSpan(range: IntRange,color: Int = Color.RED,isUnderlineText: Boolean = false,crossinline clickListener: (View) -> Unit ): SpannableString =SpannableString(this).apply {setSpan(object : ClickableSpan() {override fun onClick(widget: View) {clickListener(widget)}override fun updateDrawState(ds: TextPaint) {ds.color = colords.isUnderlineText = isUnderlineText}}, range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 在文本頭部插入一個drawable*/ fun CharSequence.toDrawableSpan(drawable: Drawable): SpannableString =SpannableString(this).apply {setSpan(DrawableMarginSpan(drawable), 0, 0, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 使一段文本模糊* [blurRadius]模糊半徑,5f模糊但能看清字,15f完全模糊看不出來字* ps:模糊半徑必須大于0f*/ fun CharSequence.toBlurSpan(range: IntRange, blurRadius: Float): SpannableString =SpannableString(this).apply {setSpan(MaskFilterSpan(BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL)), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 使一段文本加上下劃線*/ fun CharSequence.toUnderlineSpan(range: IntRange): SpannableString =SpannableString(this).apply {setSpan(UnderlineSpan(), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 替換某一段文本為img* ps:無法插入而不替換(first=last)*/ fun CharSequence.toImageSpan(range: IntRange, drawable: Drawable): SpannableString =SpannableString(this).apply {drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)setSpan(ImageSpan(drawable), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 某一段文本橫向縮放*/ fun CharSequence.toScaleXSpan(range: IntRange, scale: Float): SpannableString =SpannableString(this).apply {setSpan(ScaleXSpan(scale), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 某一段文本設置樣式* [style]BOLD加粗,ITALIC斜體,BOLD_ITALIC加粗并設置斜體*/ fun CharSequence.toStyleSpan(range: IntRange, style: Int = Typeface.BOLD): SpannableString =SpannableString(this).apply {setSpan(StyleSpan(style), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 某一段文本下沉,可配合大小span設置數學下標*/ fun CharSequence.toSubscriptSpan(range: IntRange): SpannableString =SpannableString(this).apply {setSpan(SubscriptSpan(), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 某一段文本上浮,可配合大小span設置數學上標(次方)*/ fun CharSequence.toSuperscriptSpan(range: IntRange): SpannableString =SpannableString(this).apply {setSpan(SuperscriptSpan(), range.first, range.last, Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 某一段文本相應的行設置顏色,比如0..10,如果這幾個字只在第一行就設置第一行為相應的顏色,如果占兩行就修改兩行*/ @RequiresApi(Build.VERSION_CODES.Q) fun CharSequence.toLineBackgroundSpan(range: IntRange, color: Int = Color.CYAN): SpannableString =SpannableString(this).apply {setSpan(LineBackgroundSpan.Standard(color),range.first,range.last,Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}/*** 設置某一段文本的行的行高*/ @RequiresApi(Build.VERSION_CODES.Q) fun CharSequence.toLineHeightSpan(range: IntRange, height: Int): SpannableString =SpannableString(this).apply {setSpan(LineHeightSpan.Standard(height),range.first,range.last,Spannable.SPAN_INCLUSIVE_EXCLUSIVE)}

使用:

tvLeft.text = "12345".toStyleSpan(0..1).toSizeSpan(3..4)

總結

以上是生活随笔為你收集整理的好用的Span(富文本)api的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人欧美一区二区三区 | 日韩射吧 | 欧美日韩一级片在线观看 | 91视频三区 | 国产在线a | 在线观看黄色片网站 | 国产又黄又猛又粗又爽 | 精品二区在线观看 | 无码人妻一区二区三区免费n鬼沢 | 婷婷深爱网 | 亚洲国产精品久久人人爱 | 蜜乳av一区 | 我们的2018在线观看免费高清 | 黄色一级视频网站 | 黑人日批视频 | 自拍视频一区二区 | 欧美黑人添添高潮a片www | 手机看黄色 | 国产一级片黄色 | 青草热视频 | 日韩特级毛片 | julia一区二区中文久久97 | 性少妇bbw张开 | 操日本老妇 | 午夜国产一区二区 | 色悠悠av | 91 高清 在线 制服 偷拍 | 成人片免费看 | 日韩精品黄 | 国产高清二区 | 成年人午夜免费视频 | 小罗莉极品一线天在线 | 国产精品乱码 | 久久久久亚洲av片无码 | 国产一级片在线 | 久久色中文字幕 | 国产精品成人网 | 一级片在线播放 | 亚洲做受高潮 | 成人免费毛片东京热 | 日韩中出在线 | 九色在线 | 欧美脚交| 66亚洲一卡2卡新区成片发布 | 伊人春色在线视频 | xxx色| jizzjizz亚洲 | 一起草视频在线播放 | 在线免费观看亚洲视频 | 经典三级av在线 | 国产一级做a爰片久久毛片男 | 女人十八毛片嫩草av | 黄色小视频免费看 | 在线播放不卡 | 国产伦精品一区二区三区精品 | 国产综合视频一区二区 | 校霸被c到爽夹震蛋上课高潮 | 欧美丰满少妇 | av在线电影网 | 91黄在线观看 | 杏导航aⅴ福利网站 | 在线麻豆av | 男插女在线观看 | 欧美bbbbb | 国内精品视频在线 | 91丝袜呻吟高潮美腿白嫩在线观看 | 久久国产这里只有精品 | 精品亚洲永久免费精品 | 久久精品国产亚洲 | 久久精品一日日躁夜夜躁 | 国产999视频 | 久久无码人妻丰满熟妇区毛片 | 怨女1988国语版在线观看高清 | 神马久久精品 | 亚洲春色在线观看 | 亚洲制服丝袜在线播放 | 欧美一级黄色片子 | 曰批又黄又爽免费视频 | 欧美成人精品一区二区三区在线看 | 99久99| 自拍偷拍20p| 日韩精品在线网站 | 一级黄色a级片 | 国产精品久久久久999 | 亚洲成人精选 | 免费毛片在线播放免费 | 国产中文一区二区 | 在线免费观看国产 | 亚洲熟女乱综合一区二区 | 精品人妻无码一区二区三区 | 国产精品人八做人人女人a级刘 | 校园伸入裙底揉捏1v1h | 亚洲精品久久久久久久久久吃药 | 深夜免费在线视频 | 成人免费视频国产 | 嫩草视频在线免费观看 | 毛片久久久久久久 | 国产精品久久久久久久av福利 | 国产综合视频 |