Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun SpannableStringBuilder.appendText(string: String, self: SpannableStringBuilder.() -> SpannableStringBuilder): SpannableStringBuilder {
- val newSpan = SpannableStringBuilder(string)
- self(newSpan)
- return append(newSpan)
- }
- fun SpannableStringBuilder.color(color: Int): SpannableStringBuilder {
- val span = ForegroundColorSpan(color)
- setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return this
- }
- fun SpannableStringBuilder.size(textSize: Int): SpannableStringBuilder {
- val span = AbsoluteSizeSpan(textSize)
- setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return this
- }
- fun SpannableStringBuilder.style(typeface: Int): SpannableStringBuilder {
- val span = StyleSpan(typeface)
- setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return this
- }
- fun SpannableStringBuilder.underLine(): SpannableStringBuilder {
- val span = UnderlineSpan()
- setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return this
- }
- fun SpannableStringBuilder.backgroundColor(color: Int): SpannableStringBuilder {
- val span = BackgroundColorSpan(color)
- setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return this
- }
- fun SpannableStringBuilder.onClick(onClick:(View)->Unit): SpannableStringBuilder {
- val span = object :ClickableSpan(){
- override fun onClick(view: View) {
- onClick.invoke(view)
- }
- }
- setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return this
- }
- fun SpannableStringBuilder.appendDrawable(drawable: Drawable, self: SpannableImageBuilder.() -> SpannableImageBuilder): SpannableStringBuilder {
- val newSpan = SpannableImageBuilder(drawable)
- newSpan.append("d")
- self(newSpan)
- val imageSpan = ImageSpan(newSpan.drawable, ImageSpan.ALIGN_BOTTOM)
- newSpan.setSpan(imageSpan, 0, newSpan.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
- return append(newSpan)
- }
- fun SpannableImageBuilder.color(color: Int): SpannableImageBuilder {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- drawable.colorFilter = BlendModeColorFilter(color, BlendMode.SRC_IN)
- } else {
- drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN)
- }
- return this
- }
- fun SpannableImageBuilder.size(size: Int): SpannableImageBuilder {
- drawable.setBounds(0, 0, size, size)
- return this
- }
- fun SpannableImageBuilder.sizeFit(textView: TextView): SpannableImageBuilder {
- val size = textView.lineHeight
- drawable.setBounds(0, 0, size, size)
- return this
- }
- data class SpannableImageBuilder(
- var drawable: Drawable
- ) : SpannableStringBuilder()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement