Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. fun SpannableStringBuilder.appendText(string: String, self: SpannableStringBuilder.() -> SpannableStringBuilder): SpannableStringBuilder {
  2. val newSpan = SpannableStringBuilder(string)
  3. self(newSpan)
  4. return append(newSpan)
  5. }
  6.  
  7. fun SpannableStringBuilder.color(color: Int): SpannableStringBuilder {
  8. val span = ForegroundColorSpan(color)
  9. setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  10. return this
  11. }
  12.  
  13. fun SpannableStringBuilder.size(textSize: Int): SpannableStringBuilder {
  14. val span = AbsoluteSizeSpan(textSize)
  15. setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  16. return this
  17. }
  18.  
  19. fun SpannableStringBuilder.style(typeface: Int): SpannableStringBuilder {
  20. val span = StyleSpan(typeface)
  21. setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  22. return this
  23. }
  24.  
  25. fun SpannableStringBuilder.underLine(): SpannableStringBuilder {
  26. val span = UnderlineSpan()
  27. setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  28. return this
  29. }
  30.  
  31. fun SpannableStringBuilder.backgroundColor(color: Int): SpannableStringBuilder {
  32. val span = BackgroundColorSpan(color)
  33. setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  34. return this
  35. }
  36.  
  37. fun SpannableStringBuilder.onClick(onClick:(View)->Unit): SpannableStringBuilder {
  38. val span = object :ClickableSpan(){
  39. override fun onClick(view: View) {
  40. onClick.invoke(view)
  41. }
  42. }
  43. setSpan(span, 0, length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  44. return this
  45. }
  46.  
  47. fun SpannableStringBuilder.appendDrawable(drawable: Drawable, self: SpannableImageBuilder.() -> SpannableImageBuilder): SpannableStringBuilder {
  48. val newSpan = SpannableImageBuilder(drawable)
  49. newSpan.append("d")
  50. self(newSpan)
  51.  
  52. val imageSpan = ImageSpan(newSpan.drawable, ImageSpan.ALIGN_BOTTOM)
  53. newSpan.setSpan(imageSpan, 0, newSpan.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
  54.  
  55. return append(newSpan)
  56. }
  57.  
  58. fun SpannableImageBuilder.color(color: Int): SpannableImageBuilder {
  59. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
  60. drawable.colorFilter = BlendModeColorFilter(color, BlendMode.SRC_IN)
  61. } else {
  62. drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN)
  63. }
  64. return this
  65. }
  66.  
  67. fun SpannableImageBuilder.size(size: Int): SpannableImageBuilder {
  68. drawable.setBounds(0, 0, size, size)
  69. return this
  70. }
  71.  
  72. fun SpannableImageBuilder.sizeFit(textView: TextView): SpannableImageBuilder {
  73. val size = textView.lineHeight
  74. drawable.setBounds(0, 0, size, size)
  75. return this
  76. }
  77.  
  78. data class SpannableImageBuilder(
  79. var drawable: Drawable
  80. ) : SpannableStringBuilder()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement