{"id":20543803,"url":"https://github.com/chinalike/tagtextview","last_synced_at":"2025-08-21T03:32:23.099Z","repository":{"id":38836406,"uuid":"362730849","full_name":"ChinaLike/TagTextView","owner":"ChinaLike","description":"在TextView的指定位置添加标签，支持属性快速配置和自定义标签","archived":false,"fork":false,"pushed_at":"2024-01-20T08:41:55.000Z","size":8750,"stargazers_count":152,"open_issues_count":1,"forks_count":23,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-12-11T01:51:25.264Z","etag":null,"topics":["appcompattextview","tag","textview"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChinaLike.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-29T07:37:58.000Z","updated_at":"2024-12-10T17:49:43.000Z","dependencies_parsed_at":"2024-01-20T09:11:59.462Z","dependency_job_id":null,"html_url":"https://github.com/ChinaLike/TagTextView","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChinaLike%2FTagTextView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChinaLike%2FTagTextView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChinaLike%2FTagTextView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChinaLike%2FTagTextView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChinaLike","download_url":"https://codeload.github.com/ChinaLike/TagTextView/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230487843,"owners_count":18233865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appcompattextview","tag","textview"],"created_at":"2024-11-16T01:40:43.523Z","updated_at":"2024-12-19T19:07:29.243Z","avatar_url":"https://github.com/ChinaLike.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TagTextView \n\n[![](https://img.shields.io/badge/platform-android-brightgreen.svg)](https://developer.android.com/index.html)  [![API](https://img.shields.io/badge/API-14%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=14)  [![](https://jitpack.io/v/ChinaLike/TagTextView.svg)](https://jitpack.io/#ChinaLike/TagTextView)  [![Gradle-4.1.2](https://img.shields.io/badge/Gradle-4.1.2-brightgreen.svg)](https://img.shields.io/badge/Gradle-4.1.2-brightgreen.svg)  [![](https://img.shields.io/badge/language-kotlin-brightgreen.svg)](https://kotlinlang.org/)\n\nSDK主要用于在TextView的指定位置添加文本、图片、图文、网络标签,基本能满足大多数APP的开发，对于比较复杂的标签还可以添加自定义View来实现，SDK中包含了给文本添加下划线、删除线、标记文本颜色、超链等扩展方法。\n\n![image](https://github.com/ChinaLike/TagTextView/blob/main/screenshots/screenshot.jpg)\n\n## API特色\n\n+ 支持在文本的任意位置添加各种不同标签\n+ 支持指定位置、文本替换为指定标签\n+ 支持设置TextView的行间距\n+ 支持网络标签\n+ 支持Gif标签\n+ 支持自定义布局文件\n+ 支持点击响应事件\n+ 支持下划线\n+ 支持删除线\n+ 支持超链\n+ 支持Kotlin、Java\n\n## 如何使用\n\n\u003e Step 1.先在 build.gradle(Project:XXX) 的 repositories 添加:\n    \n    ```\n\tallprojects {\n\t\trepositories {\n\t\t\t...\n\t\t\tmaven { url \"https://jitpack.io\" }\n\t\t}\n\t}\n\t```\n\n\u003e Step 2. 然后在 build.gradle(Module:XXX) 的 dependencies 添加:\n\n    ```\n\tdependencies {\n           implementation 'com.github.ChinaLike:TagTextView:参照顶部最新版本'\n           // 如果支持网络图片标签，需要添加Glide库\n           //implementation \"com.github.bumptech.glide:glide:4.11.0\"\n\t}\n\t```\n\n\u003e Step 3. 如果支持网络标签，需要在`AndroidManifest.xml`中添加:\n\n    ```\n        \u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n    ```\n详细用法可参考[Demo](https://github.com/ChinaLike/TagTextView/tree/main/app/src/main/java/com/like/tag)\t\nKotlin使用参考[MainActivity](https://github.com/ChinaLike/TagTextView/blob/main/app/src/main/java/com/like/tag/MainActivity.kt)文件\nJava使用参考[JavaActivity](https://github.com/ChinaLike/TagTextView/blob/main/app/src/main/java/com/like/tag/JavaActivity.java)文件\n\n## API说明\n\n### XML属性\n\n| API                                   | 描述                 | 默认值           | 说明                                                                                                                          |\n|---------------------------------------|----------------------|------------------|-------------------------------------------------------------------------------------------------------------------------------|\n| `tvt_type`                            | 标签类型             |                  | text-文本标签，image-图片标签，textImage-图文                                                                                 |\n| `tvt_radius`                          | 标签圆角             |                  | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_left_top_radius`                 | 标签左上角圆角       | 2dp              | `tvt_type`为text、textImage，且`tvt_radius`未设置有效                                                                         |\n| `tvt_left_bottom_radius`              | 标签左下角圆角       | 2dp              | `tvt_type`为text、textImage，且`tvt_radius`未设置有效                                                                         |\n| `tvt_right_top_radius`                | 标签右上角圆角       | 2dp              | `tvt_type`为text、textImage，且`tvt_radius`未设置有效                                                                         |\n| `tvt_right_bottom_radius`             | 标签右下角圆角       | 2dp              | `tvt_type`为text、textImage，且`tvt_radius`未设置有效                                                                         |\n| `tvt_padding`                         | 标签内边距           |                  | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_top_padding`                     | 标签上内边距         | 0dp              | `tvt_type`为text、textImage，且`tvt_padding`未设置有效                                                                        |\n| `tvt_right_padding`                   | 标签右内边距         | 5dp              | `tvt_type`为text、textImage，且`tvt_padding`未设置有效                                                                        |\n| `tvt_bottom_padding`                  | 标签下内边距         | 0dp              | `tvt_type`为text、textImage，且`tvt_padding`未设置有效                                                                        |\n| `tvt_left_padding`                    | 标签左内边距         | 5dp              | `tvt_type`为text、textImage，且`tvt_padding`未设置有效                                                                        |\n| `tvt_background_color`                | 标签背景颜色         | Color.GRAY       | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_background_img`                  | 标签背景图片         |                  | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_start_gradient_background_color` | 标签渐变开始颜色     |                  | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_end_gradient_background_color`   | 标签渐变结束颜色     |                  | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_stroke_width`                    | 标签边框宽度         |                  | `tvt_type`为text、textImage时有效                                                                                             |\n| `tvt_stroke_color`                    | 标签边框颜色         | Color.GRAY       | `tvt_type`为text、textImage，且`tvt_stroke_width`\u003e0有效                                                                       |\n| `tvt_text_size`                       | 文本字体大小         |                  | `tvt_type`为text、textImage有效                                                                                               |\n| `tvt_text_color`                      | 文本字体颜色         | Color.WHITE      | `tvt_type`为text、textImage有效                                                                                               |\n| `tvt_width`                           | 标签宽度             |                  | `tvt_type`为text、textImage有效                                                                                               |\n| `tvt_height`                          | 标签高度             |                  | `tvt_type`为text、textImage有效                                                                                               |\n| `tvt_align`                           | 标签与文本对齐方式   | Align.CENTER     | baseline-基线对齐，center-中心对齐，bottom-底部对齐，top-顶部对齐                                                                           |\n| `tvt_text`                            | 标签文本             |                  | `tvt_type`为text、textImage有效                                                                                               |\n| `tvt_image_resource`                  | 标签图片             |                  | `tvt_type`为image、textImage有效                                                                                              |\n| `tvt_position`                        | 标签显示位置         | 0                | 默认在文本最前面                                                                                                              |\n| `tvt_margin_left`                     | 标签距离左侧距离     | 0                |                                                                                                                               |\n| `tvt_margin_right`                    | 标签距离右侧距离     | 0                |                                                                                                                               |\n| `tvt_text_margin_image`               | 文本与图片的距离     | 0dp              | `tvt_type`为textImage有效                                                                                                     |\n| `tvt_layout`                          | 自定义View标签       |                  | 不设置`tvt_type`时有效                                                                                                        |\n| `tvt_image_align_text`                | 图片与文字的位置关系 | Orientation.LEFT | `tvt_type`为textImage有效，left-图片在文字的左边（默认），top-图片在文字上边，right-图片在文字的右边，bottom-图片在文字的下边 |\n| `tvt_drawable_zoom_type`              | 图片缩放类型         | DrawableZoomType.ORIGINAL |   |\n| `tvt_image_width`                     | 图片的宽度           |                  | `tvt_type`为url、image、textImage时有效                                                                                            |\n| `tvt_image_height`                    | 图片的高度           |                  | `tvt_type`为url、image、textImage时有效                                                                                            |\n\n### TagConfig属性\n\n| API                          | 描述           | 默认值                                    | 说明                                                               |\n|------------------------------|--------------|-------------------------------------------|--------------------------------------------------------------------|\n| type                         | 标签类型         |                                           | TEXT-文本，IMAGE-图片，TEXT_IMAGE-图文结合，URL-网络链接           |\n| textSize                     | 标签上文本的字体大小   |                                           | 单位PX，不传就和TextView的textSize保持一致                         |\n| textColor                    | 标签上文本的字体颜色   | Color.WHITE                               |                                                                    |\n| typeface                     | 文本字体样式       |                                           |                                                      |\n| width                        | 标签宽度         |                                           | 不设置自动适应                                                     |\n| height                       | 标签宽度         |                                           | 不设置自动适应                                                     |\n| radius                       | 标签的圆角        |                                           |                                                                    |\n| leftTopRadius                | 标签左上的圆角      | 2dp                                       |                                                                    |\n| leftBottomRadius             | 标签左下的圆角      | 2dp                                       |                                                                    |\n| rightTopRadius               | 标签右上的圆角      | 2dp                                       |                                                                    |\n| rightBottomRadius            | 标签右下的圆角      | 2dp                                       |                                                                    |\n| padding                      | 标签的内边距       |                                           | 默认值：topPadding=0，rightPadding=5,bottomPadding=0,leftPadding=5 |\n| topPadding                   | 标签的上内边距      | 0dp                                       |                                                                    |\n| rightPadding                 | 标签的右内边距      | 5dp                                       |                                                                    |\n| bottomPadding                | 标签的下内边距      | 0dp                                       |                                                                    |\n| leftPadding                  | 标签的左内边距      | 5dp                                       |                                                                    |\n| backgroundColor              | 标签的背景颜色      | Color.GRAY                                |                                                                    |\n| backgroundDrawable           | 标签的背景图片      |                                           |                                                                    |\n| startGradientBackgroundColor | 标签的渐变开始颜色    |                                           |                                                                    |\n| endGradientBackgroundColor   | 标签的渐变结束颜色    |                                           |                                                                    |\n| gradientOrientation          | 标签的渐变样式      | GradientDrawable .Orientation .LEFT_RIGHT |                                                                    |\n| strokeWidth                  | 标签的边框宽度      | 0                                         |                                                                    |\n| strokeColor                  | 标签的边框颜色      | Color.GRAY                                | strokeWidth\u003e0有效                                                  |\n| imageAlignText               | 图片在文字的那一个方向  | Orientation.LEFT                          |                                                                    |\n| drawableZoomType             | 图片缩放类型       | DrawableZoomType.ORIGINAL                  |                                                                    |\n| imageWidth                   | 图片的宽度        |                                           |                                                    |\n| imageHeight                  | 图片的高度        |                                           |                                                    |\n| align                        | 标签的对齐方式      | Align.CENTER                              |                                                                    |\n| text                         | 标签文本         |                                           | type为TYPE.TEXT、TYPE.TEXT_IMAGE有效                               |\n| imageResource                | 标签图片         |                                           | type为TYPE.IMAGE、TYPE.TEXT_IMAGE有效                              |\n| imageDrawable                | 标签图片         |                                           | type为TYPE.IMAGE、TYPE.TEXT_IMAGE有效                              |\n| imageBitmap                  | 标签图片         |                                           | type为TYPE.IMAGE、TYPE.TEXT_IMAGE有效                              |\n| imageUrl                     | 标签网络图片链接     |                                           | type为TYPE.URL有效                                                 |\n| position                     | 标签显示位置       | 0                                         | 多次添加依次排序                                                   |\n| marginLeft                   | 标签距离左边距离     | 0dp                                       |                                                                    |\n| marginRight                  | 标签距离右边距离     | 0dp                                       |                                                                    |\n| textMarginImage              | 标签内文字距离图片的距离 | 0dp                                       | type为Type.TEXT_IMAGE有效                                          |\n\n### 方法\n\n- addTag(config:TagConfig, onClickListener: (() -\u003e Unit)? = null)\n    \n    + 添加标签\n    \n    + 属性介绍\n    \n        config:标签的样式配置,参考[TagConfig](#TagConfig属性)\n\n        onClickListener:点击事件响应,默认：null\n    \n- addTag(view:View,position = 0:Int,align:Align = Align.CENTER ,marginLeft:Int = 0,marginRight:Int = 0,onClickListener: (() -\u003e Unit)? = null)\n\n    + 添加自定义标签\n    \n    + 属性介绍\n        \n        view:自定义View\n        \n        position:显示位置，默认：0\n        \n        align:对齐方式，默认：Align.CENTER\n        \n        marginLeft:标签距离左侧距离，默认：0\n        \n        marginRight:标签距离右侧距离，默认：0\n\n        onClickListener:点击事件，默认：null\n    \n- addTextTag(block: TagConfig.() -\u003e Unit)\n\n    + 添加文本标签\n    \n    + 属性介绍\n    \n        block:标签自定义参数\n\n- addTextTag(block: TagConfig.() -\u003e Unit,onClickListener: () -\u003e Unit)\n\n    + 添加文本标签\n\n    + 属性介绍\n\n      block:标签自定义参数\n\n      onClickListener:点击事件\n    \n- addImageTag(block: TagConfig.() -\u003e Unit)\n\n    + 添加图标标签\n    \n    + 属性介绍\n    \n        block: 标签自定义参数 \n\n- addImageTag(block: TagConfig.() -\u003e Unit,onClickListener: () -\u003e Unit)\n\n    + 添加图标标签\n    \n    + 属性介绍\n    \n        block: 标签自定义参数\n\n        onClickListener:点击事件\n    \n- addTextImageTag(block: TagConfig.() -\u003e Unit)\n\n    + 添加图文标签\n    \n    + 属性介绍\n    \n        block: 标签自定义参数\n\n\n- addTextImageTag(block: TagConfig.() -\u003e Unit,onClickListener: () -\u003e Unit)\n\n    + 添加图文标签\n\n    + 属性介绍\n\n      block: 标签自定义参数\n\n      onClickListener:点击事件\n    \n- addUrlTag(block: TagConfig.() -\u003e Unit)\n\n    + 添加图文标签\n    \n    + 属性介绍\n    \n        block: 标签自定义参数\n\n- addUrlTag(block: TagConfig.() -\u003e Unit,onClickListener: () -\u003e Unit)\n\n    + 添加图文标签\n\n    + 属性介绍\n\n      block: 标签自定义参数\n\n      onClickListener:点击事件\n        \n- replaceTag(tagText: String, config: TagConfig, isFirst: Boolean = true, onClickListener: (() -\u003e Unit)? = null)\n\n    + 替换标签\n    \n    + 属性介绍\n    \n        tagText:需要替换的文本\n        \n        config:标签配置\n        \n        isFirst:是否匹配第一个,默认：true\n\n        onClickListener:点击事件,默认：null\n    \n- replaceTag(tagText: String, view: View, isFirst: Boolean = true, align: Align = Align.CENTER, marginLeft: Int = 0, marginRight: Int = 0, onClickListener: (() -\u003e Unit)? = null)\n\n    + 替换标签\n    \n    + 属性介绍\n    \n         tagText:需要替换的文本\n         \n         view:自定义标签\n         \n         isFirst:是否匹配第一个,默认：false\n         \n         align:标签对齐方式,默认：Align.CENTER\n         \n         marginLeft:标签距离左侧距离,默认：0\n         \n         marginRight:标签距离右侧距离,默认：0\n\n         onClickListener:点击事件,默认：null\n  \n- replaceTag(startIndex: Int, endIndex: Int, config: TagConfig, onClickListener: (() -\u003e Unit)? = null)\n\n    + 替换标签\n    \n    + 属性介绍\n    \n         startIndex:开始下标\n         \n         endIndex:结束下标\n         \n         config:标签配置\n\n         onClickListener:点击事件,默认：null\n\n- replaceTag( startIndex: Int, endIndex: Int, view: View, align: Align = Align.CENTER, marginLeft: Int = 0, marginRight: Int = 0 , onClickListener: (() -\u003e Unit)? = null)\n\n    + 替换标签\n    \n    + 属性介绍\n    \n         startIndex:开始位置\n         \n         endIndex:结束位置\n         \n         view:自定义标签\n         \n         align:标签对齐方式,默认：Align.CENTER\n         \n         marginLeft:标签距离左侧距离,默认：0\n         \n         marginRight:标签距离右侧距离,默认：0\n\n         onClickListener:点击事件,默认：null\n\n-  setUnderline(underlineText: String? = null, isFirst: Boolean = true) \n\n\t+ 设置文本下划线\n\t\n\t+ 属性介绍\n\t\n        underlineText:需要加下划线的文本,不设置则匹配所有文本\n        \n        isFirst:是否匹配第一个指定字符串\n\n-  setUnderline(startIndex: Int, endIndex: Int)\n\n\t+ 设置文本下划线\n\t\n\t+ 属性介绍\n\t\n        startIndex:开始下标\n        \n        endIndex:结束下标\n\n-  setDeleteLine(deleteLineText: String? = null, isFirst: Boolean = true)\n\n\t+ 设置文本删除线\n\t\n\t+ 属性介绍\n\t\n\t    deleteLineText:需要加删除线的文本，不设置则匹配所有文本\n\n-  setDeleteLine(startIndex: Int, endIndex: Int)\n\n\t+ 设置文本删除线\n\t\n\t+ 属性介绍\n\t\n        startIndex:开始下标\n        \n        endIndex:结束下标\n\n-  setSpecificTextColor(@ColorInt color: Int,specificText: String,isFirst: Boolean = true,isUnderlineText: Boolean = false,click: () -\u003e Unit = {})\n\n\t+ 设置指定文字颜色\n\t\n\t+ 属性介绍\n\t\n        color:制定文本颜色\n        \n        specificText:指定文本\n        \n        isFirst:匹配第一个，默认值：true\n        \n        isUnderlineText:是否显示下划线，可选，默认值false\n        \n        click:点击事件响应\n\n-  setSpecificTextColor(@ColorInt color: Int,startIndex: Int，endIndex: Int,isUnderlineText: Boolean = false,click: () -\u003e Unit = {})\n\n\t+ 设置指定文字颜色\n\t\n\t+ 属性介绍\n\t\n        color:制定文本颜色\n        \n        startIndex:开始下标\n        \n        endIndex:结束下标\n        \n        isUnderlineText:是否显示下划线，可选，默认值false\n        \n        click:点击事件响应\n\n-  setURLSpan(startIndex: Int,endIndex: Int,type: LinkType,linkText: String,@ColorInt color: Int? = null,isUnderlineText: Boolean = false)\n\n\t+ 设置超链\n\t\n\t+ 属性介绍\n\t\n        startIndex:开始下标\n        \n        endIndex:结束下标\n        \n        type:超链接类型，参考[LinkType](https://github.com/ChinaLike/TagTextView/blob/main/TagTextView/src/main/java/com/view/text/config/LinkType.kt)\n        \n        linkText:链接文本 ，比如跳转电话，只需要传入电话号码就可以\n        \n        color:超链文本的颜色\n        \n        isUnderlineText:是否显示下划线，默认值false\n\n- getOriginalText():CharSequence\n\n    + 获取原始文本\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinalike%2Ftagtextview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchinalike%2Ftagtextview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchinalike%2Ftagtextview/lists"}