Android 在setClickListener期间设置渐变时,以编程方式设置渐变不起作用。为什么?
我以编程方式设置渐变(按照中共享的方法) 这很有效。但是,如果我将Android 在setClickListener期间设置渐变时,以编程方式设置渐变不起作用。为什么?,android,gradient,Android,Gradient,我以编程方式设置渐变(按照中共享的方法) 这很有效。但是,如果我将setTextGradient()移动到setOnCLickListner中,为什么它不工作 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btn_press_me.setOnClickListene
setTextGradient()
移动到setOnCLickListner
中,为什么它不工作
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_press_me.setOnClickListener {
setTextGradient() // Move here and it is not working.
}
}
private fun setTextGradient() {
val paint: TextPaint = text_happy.paint
val width = paint.measureText(text_happy.text.toString())
val textShader: Shader = LinearGradient(
0f, 0f, width, text_happy.textSize, intArrayOf(
Color.parseColor("#F97C3C"),
Color.parseColor("#FDB54E"),
Color.parseColor("#64B678"),
Color.parseColor("#478AEA"),
Color.parseColor("#8446CC")
), null, TileMode.CLAMP
)
text_happy.paint.shader = textShader
}
显然,我需要在设置后使其无效
private fun setTextGradient() {
val paint: TextPaint = text_happy.paint
val width = paint.measureText(text_happy.text.toString())
val textShader: Shader = LinearGradient(
0f, 0f, width, text_happy.textSize, intArrayOf(
Color.parseColor("#F97C3C"),
Color.parseColor("#FDB54E"),
Color.parseColor("#64B678"),
Color.parseColor("#478AEA"),
Color.parseColor("#8446CC")
), null, TileMode.CLAMP
)
text_happy.paint.shader = textShader
text_happy.invalidate() // Add the invalidation here
}
private fun setTextGradient() {
val paint: TextPaint = text_happy.paint
val width = paint.measureText(text_happy.text.toString())
val textShader: Shader = LinearGradient(
0f, 0f, width, text_happy.textSize, intArrayOf(
Color.parseColor("#F97C3C"),
Color.parseColor("#FDB54E"),
Color.parseColor("#64B678"),
Color.parseColor("#478AEA"),
Color.parseColor("#8446CC")
), null, TileMode.CLAMP
)
text_happy.paint.shader = textShader
text_happy.invalidate() // Add the invalidation here
}