https://github.com/chinalike/tagtextview
在TextView的指定位置添加标签,支持属性快速配置和自定义标签
https://github.com/chinalike/tagtextview
appcompattextview tag textview
Last synced: about 2 months ago
JSON representation
在TextView的指定位置添加标签,支持属性快速配置和自定义标签
- Host: GitHub
- URL: https://github.com/chinalike/tagtextview
- Owner: ChinaLike
- Created: 2021-04-29T07:37:58.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-01-20T08:41:55.000Z (over 1 year ago)
- Last Synced: 2024-12-11T01:51:25.264Z (10 months ago)
- Topics: appcompattextview, tag, textview
- Language: Kotlin
- Homepage:
- Size: 8.34 MB
- Stars: 152
- Watchers: 5
- Forks: 23
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TagTextView
[](https://developer.android.com/index.html) [](https://android-arsenal.com/api?level=14) [](https://jitpack.io/#ChinaLike/TagTextView) [](https://img.shields.io/badge/Gradle-4.1.2-brightgreen.svg) [](https://kotlinlang.org/)
SDK主要用于在TextView的指定位置添加文本、图片、图文、网络标签,基本能满足大多数APP的开发,对于比较复杂的标签还可以添加自定义View来实现,SDK中包含了给文本添加下划线、删除线、标记文本颜色、超链等扩展方法。

## API特色
+ 支持在文本的任意位置添加各种不同标签
+ 支持指定位置、文本替换为指定标签
+ 支持设置TextView的行间距
+ 支持网络标签
+ 支持Gif标签
+ 支持自定义布局文件
+ 支持点击响应事件
+ 支持下划线
+ 支持删除线
+ 支持超链
+ 支持Kotlin、Java## 如何使用
> Step 1.先在 build.gradle(Project:XXX) 的 repositories 添加:
```
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
```> Step 2. 然后在 build.gradle(Module:XXX) 的 dependencies 添加:
```
dependencies {
implementation 'com.github.ChinaLike:TagTextView:参照顶部最新版本'
// 如果支持网络图片标签,需要添加Glide库
//implementation "com.github.bumptech.glide:glide:4.11.0"
}
```> Step 3. 如果支持网络标签,需要在`AndroidManifest.xml`中添加:
```
```
详细用法可参考[Demo](https://github.com/ChinaLike/TagTextView/tree/main/app/src/main/java/com/like/tag)
Kotlin使用参考[MainActivity](https://github.com/ChinaLike/TagTextView/blob/main/app/src/main/java/com/like/tag/MainActivity.kt)文件
Java使用参考[JavaActivity](https://github.com/ChinaLike/TagTextView/blob/main/app/src/main/java/com/like/tag/JavaActivity.java)文件## API说明
### XML属性
| API | 描述 | 默认值 | 说明 |
|---------------------------------------|----------------------|------------------|-------------------------------------------------------------------------------------------------------------------------------|
| `tvt_type` | 标签类型 | | text-文本标签,image-图片标签,textImage-图文 |
| `tvt_radius` | 标签圆角 | | `tvt_type`为text、textImage时有效 |
| `tvt_left_top_radius` | 标签左上角圆角 | 2dp | `tvt_type`为text、textImage,且`tvt_radius`未设置有效 |
| `tvt_left_bottom_radius` | 标签左下角圆角 | 2dp | `tvt_type`为text、textImage,且`tvt_radius`未设置有效 |
| `tvt_right_top_radius` | 标签右上角圆角 | 2dp | `tvt_type`为text、textImage,且`tvt_radius`未设置有效 |
| `tvt_right_bottom_radius` | 标签右下角圆角 | 2dp | `tvt_type`为text、textImage,且`tvt_radius`未设置有效 |
| `tvt_padding` | 标签内边距 | | `tvt_type`为text、textImage时有效 |
| `tvt_top_padding` | 标签上内边距 | 0dp | `tvt_type`为text、textImage,且`tvt_padding`未设置有效 |
| `tvt_right_padding` | 标签右内边距 | 5dp | `tvt_type`为text、textImage,且`tvt_padding`未设置有效 |
| `tvt_bottom_padding` | 标签下内边距 | 0dp | `tvt_type`为text、textImage,且`tvt_padding`未设置有效 |
| `tvt_left_padding` | 标签左内边距 | 5dp | `tvt_type`为text、textImage,且`tvt_padding`未设置有效 |
| `tvt_background_color` | 标签背景颜色 | Color.GRAY | `tvt_type`为text、textImage时有效 |
| `tvt_background_img` | 标签背景图片 | | `tvt_type`为text、textImage时有效 |
| `tvt_start_gradient_background_color` | 标签渐变开始颜色 | | `tvt_type`为text、textImage时有效 |
| `tvt_end_gradient_background_color` | 标签渐变结束颜色 | | `tvt_type`为text、textImage时有效 |
| `tvt_stroke_width` | 标签边框宽度 | | `tvt_type`为text、textImage时有效 |
| `tvt_stroke_color` | 标签边框颜色 | Color.GRAY | `tvt_type`为text、textImage,且`tvt_stroke_width`>0有效 |
| `tvt_text_size` | 文本字体大小 | | `tvt_type`为text、textImage有效 |
| `tvt_text_color` | 文本字体颜色 | Color.WHITE | `tvt_type`为text、textImage有效 |
| `tvt_width` | 标签宽度 | | `tvt_type`为text、textImage有效 |
| `tvt_height` | 标签高度 | | `tvt_type`为text、textImage有效 |
| `tvt_align` | 标签与文本对齐方式 | Align.CENTER | baseline-基线对齐,center-中心对齐,bottom-底部对齐,top-顶部对齐 |
| `tvt_text` | 标签文本 | | `tvt_type`为text、textImage有效 |
| `tvt_image_resource` | 标签图片 | | `tvt_type`为image、textImage有效 |
| `tvt_position` | 标签显示位置 | 0 | 默认在文本最前面 |
| `tvt_margin_left` | 标签距离左侧距离 | 0 | |
| `tvt_margin_right` | 标签距离右侧距离 | 0 | |
| `tvt_text_margin_image` | 文本与图片的距离 | 0dp | `tvt_type`为textImage有效 |
| `tvt_layout` | 自定义View标签 | | 不设置`tvt_type`时有效 |
| `tvt_image_align_text` | 图片与文字的位置关系 | Orientation.LEFT | `tvt_type`为textImage有效,left-图片在文字的左边(默认),top-图片在文字上边,right-图片在文字的右边,bottom-图片在文字的下边 |
| `tvt_drawable_zoom_type` | 图片缩放类型 | DrawableZoomType.ORIGINAL | |
| `tvt_image_width` | 图片的宽度 | | `tvt_type`为url、image、textImage时有效 |
| `tvt_image_height` | 图片的高度 | | `tvt_type`为url、image、textImage时有效 |### TagConfig属性
| API | 描述 | 默认值 | 说明 |
|------------------------------|--------------|-------------------------------------------|--------------------------------------------------------------------|
| type | 标签类型 | | TEXT-文本,IMAGE-图片,TEXT_IMAGE-图文结合,URL-网络链接 |
| textSize | 标签上文本的字体大小 | | 单位PX,不传就和TextView的textSize保持一致 |
| textColor | 标签上文本的字体颜色 | Color.WHITE | |
| typeface | 文本字体样式 | | |
| width | 标签宽度 | | 不设置自动适应 |
| height | 标签宽度 | | 不设置自动适应 |
| radius | 标签的圆角 | | |
| leftTopRadius | 标签左上的圆角 | 2dp | |
| leftBottomRadius | 标签左下的圆角 | 2dp | |
| rightTopRadius | 标签右上的圆角 | 2dp | |
| rightBottomRadius | 标签右下的圆角 | 2dp | |
| padding | 标签的内边距 | | 默认值:topPadding=0,rightPadding=5,bottomPadding=0,leftPadding=5 |
| topPadding | 标签的上内边距 | 0dp | |
| rightPadding | 标签的右内边距 | 5dp | |
| bottomPadding | 标签的下内边距 | 0dp | |
| leftPadding | 标签的左内边距 | 5dp | |
| backgroundColor | 标签的背景颜色 | Color.GRAY | |
| backgroundDrawable | 标签的背景图片 | | |
| startGradientBackgroundColor | 标签的渐变开始颜色 | | |
| endGradientBackgroundColor | 标签的渐变结束颜色 | | |
| gradientOrientation | 标签的渐变样式 | GradientDrawable .Orientation .LEFT_RIGHT | |
| strokeWidth | 标签的边框宽度 | 0 | |
| strokeColor | 标签的边框颜色 | Color.GRAY | strokeWidth>0有效 |
| imageAlignText | 图片在文字的那一个方向 | Orientation.LEFT | |
| drawableZoomType | 图片缩放类型 | DrawableZoomType.ORIGINAL | |
| imageWidth | 图片的宽度 | | |
| imageHeight | 图片的高度 | | |
| align | 标签的对齐方式 | Align.CENTER | |
| text | 标签文本 | | type为TYPE.TEXT、TYPE.TEXT_IMAGE有效 |
| imageResource | 标签图片 | | type为TYPE.IMAGE、TYPE.TEXT_IMAGE有效 |
| imageDrawable | 标签图片 | | type为TYPE.IMAGE、TYPE.TEXT_IMAGE有效 |
| imageBitmap | 标签图片 | | type为TYPE.IMAGE、TYPE.TEXT_IMAGE有效 |
| imageUrl | 标签网络图片链接 | | type为TYPE.URL有效 |
| position | 标签显示位置 | 0 | 多次添加依次排序 |
| marginLeft | 标签距离左边距离 | 0dp | |
| marginRight | 标签距离右边距离 | 0dp | |
| textMarginImage | 标签内文字距离图片的距离 | 0dp | type为Type.TEXT_IMAGE有效 |### 方法
- addTag(config:TagConfig, onClickListener: (() -> Unit)? = null)
+ 添加标签
+ 属性介绍
config:标签的样式配置,参考[TagConfig](#TagConfig属性)onClickListener:点击事件响应,默认:null
- addTag(view:View,position = 0:Int,align:Align = Align.CENTER ,marginLeft:Int = 0,marginRight:Int = 0,onClickListener: (() -> Unit)? = null)+ 添加自定义标签
+ 属性介绍
view:自定义View
position:显示位置,默认:0
align:对齐方式,默认:Align.CENTER
marginLeft:标签距离左侧距离,默认:0
marginRight:标签距离右侧距离,默认:0onClickListener:点击事件,默认:null
- addTextTag(block: TagConfig.() -> Unit)+ 添加文本标签
+ 属性介绍
block:标签自定义参数- addTextTag(block: TagConfig.() -> Unit,onClickListener: () -> Unit)
+ 添加文本标签
+ 属性介绍
block:标签自定义参数
onClickListener:点击事件
- addImageTag(block: TagConfig.() -> Unit)+ 添加图标标签
+ 属性介绍
block: 标签自定义参数- addImageTag(block: TagConfig.() -> Unit,onClickListener: () -> Unit)
+ 添加图标标签
+ 属性介绍
block: 标签自定义参数onClickListener:点击事件
- addTextImageTag(block: TagConfig.() -> Unit)+ 添加图文标签
+ 属性介绍
block: 标签自定义参数- addTextImageTag(block: TagConfig.() -> Unit,onClickListener: () -> Unit)
+ 添加图文标签
+ 属性介绍
block: 标签自定义参数
onClickListener:点击事件
- addUrlTag(block: TagConfig.() -> Unit)+ 添加图文标签
+ 属性介绍
block: 标签自定义参数- addUrlTag(block: TagConfig.() -> Unit,onClickListener: () -> Unit)
+ 添加图文标签
+ 属性介绍
block: 标签自定义参数
onClickListener:点击事件
- replaceTag(tagText: String, config: TagConfig, isFirst: Boolean = true, onClickListener: (() -> Unit)? = null)+ 替换标签
+ 属性介绍
tagText:需要替换的文本
config:标签配置
isFirst:是否匹配第一个,默认:trueonClickListener:点击事件,默认:null
- replaceTag(tagText: String, view: View, isFirst: Boolean = true, align: Align = Align.CENTER, marginLeft: Int = 0, marginRight: Int = 0, onClickListener: (() -> Unit)? = null)+ 替换标签
+ 属性介绍
tagText:需要替换的文本
view:自定义标签
isFirst:是否匹配第一个,默认:false
align:标签对齐方式,默认:Align.CENTER
marginLeft:标签距离左侧距离,默认:0
marginRight:标签距离右侧距离,默认:0onClickListener:点击事件,默认:null
- replaceTag(startIndex: Int, endIndex: Int, config: TagConfig, onClickListener: (() -> Unit)? = null)+ 替换标签
+ 属性介绍
startIndex:开始下标
endIndex:结束下标
config:标签配置onClickListener:点击事件,默认:null
- replaceTag( startIndex: Int, endIndex: Int, view: View, align: Align = Align.CENTER, marginLeft: Int = 0, marginRight: Int = 0 , onClickListener: (() -> Unit)? = null)
+ 替换标签
+ 属性介绍
startIndex:开始位置
endIndex:结束位置
view:自定义标签
align:标签对齐方式,默认:Align.CENTER
marginLeft:标签距离左侧距离,默认:0
marginRight:标签距离右侧距离,默认:0onClickListener:点击事件,默认:null
- setUnderline(underlineText: String? = null, isFirst: Boolean = true)
+ 设置文本下划线
+ 属性介绍
underlineText:需要加下划线的文本,不设置则匹配所有文本
isFirst:是否匹配第一个指定字符串- setUnderline(startIndex: Int, endIndex: Int)
+ 设置文本下划线
+ 属性介绍
startIndex:开始下标
endIndex:结束下标- setDeleteLine(deleteLineText: String? = null, isFirst: Boolean = true)
+ 设置文本删除线
+ 属性介绍
deleteLineText:需要加删除线的文本,不设置则匹配所有文本- setDeleteLine(startIndex: Int, endIndex: Int)
+ 设置文本删除线
+ 属性介绍
startIndex:开始下标
endIndex:结束下标- setSpecificTextColor(@ColorInt color: Int,specificText: String,isFirst: Boolean = true,isUnderlineText: Boolean = false,click: () -> Unit = {})
+ 设置指定文字颜色
+ 属性介绍
color:制定文本颜色
specificText:指定文本
isFirst:匹配第一个,默认值:true
isUnderlineText:是否显示下划线,可选,默认值false
click:点击事件响应- setSpecificTextColor(@ColorInt color: Int,startIndex: Int,endIndex: Int,isUnderlineText: Boolean = false,click: () -> Unit = {})
+ 设置指定文字颜色
+ 属性介绍
color:制定文本颜色
startIndex:开始下标
endIndex:结束下标
isUnderlineText:是否显示下划线,可选,默认值false
click:点击事件响应- setURLSpan(startIndex: Int,endIndex: Int,type: LinkType,linkText: String,@ColorInt color: Int? = null,isUnderlineText: Boolean = false)
+ 设置超链
+ 属性介绍
startIndex:开始下标
endIndex:结束下标
type:超链接类型,参考[LinkType](https://github.com/ChinaLike/TagTextView/blob/main/TagTextView/src/main/java/com/view/text/config/LinkType.kt)
linkText:链接文本 ,比如跳转电话,只需要传入电话号码就可以
color:超链文本的颜色
isUnderlineText:是否显示下划线,默认值false- getOriginalText():CharSequence
+ 获取原始文本