Skip to content

在TextView的指定位置添加标签,支持属性快速配置和自定义标签

Notifications You must be signed in to change notification settings

ChinaLike/TagTextView

Repository files navigation

TagTextView

API Gradle-4.1.2

SDK主要用于在TextView的指定位置添加文本、图片、图文、网络标签,基本能满足大多数APP的开发,对于比较复杂的标签还可以添加自定义View来实现,SDK中包含了给文本添加下划线、删除线、标记文本颜色、超链等扩展方法。

image

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中添加:

```
    <uses-permission android:name="android.permission.INTERNET" />
```

详细用法可参考Demo Kotlin使用参考MainActivity文件 Java使用参考JavaActivity文件

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

      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:标签距离右侧距离,默认:0

      onClickListener:点击事件,默认: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:是否匹配第一个,默认:true

      onClickListener:点击事件,默认: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:标签距离右侧距离,默认:0

      onClickListener:点击事件,默认: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:标签距离右侧距离,默认:0

      onClickListener:点击事件,默认: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

      linkText:链接文本 ,比如跳转电话,只需要传入电话号码就可以

      color:超链文本的颜色

      isUnderlineText:是否显示下划线,默认值false

  • getOriginalText():CharSequence

    • 获取原始文本

About

在TextView的指定位置添加标签,支持属性快速配置和自定义标签

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published