我可以使用以下方法成功更改颜色:

TextView1.setOnClickListener{
 TextView1.setBackgroundResource(R.color.red);
}

但是如果我用
     TextView1.setOnClickListener{
         TextView1.setBackgroundResource(R.color.red);
         Thread.sleep(1_000)
         TextView1.setBackgroundResource(R.color.white);
        }

颜色完全不变。这是为什么?

最佳答案

这是由于以下事实:调用Thread.sleep()只会导致线程挂起,在此特定示例中,它导致GUI(图形用户界面)线程挂起。

屏幕上gui元素的实际绘制发生在同一线程上,在他完成调用您的方法之后,您没有给他时间这样做。

您可以通过调度延迟的 call 来达到相同的结果。

TextView1.setOnClickListener {
    TextView1.setBackgroundResource(R.color.red);

    Handler().postDelayed({
        [email protected](java.lang.Runnable {
            TextView1.setBackgroundResource(R.color.white);
        })
    }, 1000)
}

10-08 02:51