2021年2月18日木曜日

縁取り TextView

縁の設定をして super.onDraw() を呼び、中の設定をして super.onDraw() を呼ぶ。
TextPaint.setColor() ではなく TextView.setTextColor() を使わないとうまく色が変わらない。
  1. class OutlineTextView : AppCompatTextView {  
  2.   
  3.     constructor(context: Context) : super(context)  
  4.     constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)  
  5.     constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(  
  6.         context,  
  7.         attrs,  
  8.         defStyleAttr  
  9.     )  
  10.       
  11.     private val outlineWidth = 10 * context.resources.displayMetrics.density  
  12.   
  13.     override fun onDraw(canvas: Canvas?) {  
  14.         setTextColor(Color.RED)  
  15.         paint.apply {  
  16.             style = Paint.Style.FILL_AND_STROKE  
  17.             strokeWidth = outlineWidth  
  18.         }  
  19.         super.onDraw(canvas)  
  20.   
  21.         setTextColor(Color.BLACK)  
  22.         paint.apply {  
  23.             style = Paint.Style.FILL  
  24.             strokeWidth = 0f  
  25.         }  
  26.         super.onDraw(canvas)  
  27.     }  
  28. }  




0 件のコメント:

コメントを投稿