【问题标题】:How to change background of a button in android and retain it after few seconds如何在android中更改按钮的背景并在几秒钟后保留它
【发布时间】:2020-10-13 07:02:50
【问题描述】:

我提到了这个 --> https://stackoverflow.com/a/31367723/12553303

我尝试了上述解决方案,但它不起作用 --> 几秒钟内不显示该可绘制对象

这是我的代码:

   buynow.setOnClickListener(object : View.OnClickListener{
        override fun onClick(v: View?) {
            // set the color red first.
   buynow.setBackgroundResource(R.drawable.mybuttonred)
            // change to original after 5 secs.
            Handler().postDelayed(Runnable { buynow.setBackgroundResource(R.drawable.mybutton)
                Toast.makeText(applicationContext,"ksjdf",Toast.LENGTH_LONG).show()
            },
                5000)
        }
    })

即使吐司在点击时也不起作用

我错过了什么?

【问题讨论】:

  • 因为您在视图上调用了 setOnClickListener(在您的情况下为buynow)。您无需在buynow 上再次调用setBackgroundResource。您在 onclick 方法 中将视图(buynow)作为 v 传递,您可以使用它。 示例 - v. setBackgroundResource.. 处理 nullabillity
  • 您确定buynow 视图是可点击的吗?也许点击侦听器在您的代码中的其他地方被删除/替换。你还有其他buynow.setOnClickListener(...) 的调用吗?
  • 我正在尝试@DevBhattacharjee
  • @JeneaVranceanu Do you have any other invocations of buynow.setOnClickListener(...)? ---> 没有
  • 能否提供整个类的代码??

标签: android android-layout kotlin button handler


【解决方案1】:

这对我来说很好,您需要将视图设为最终视图,以便您可以在处理程序主体中访问它

buyNow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View view) {
            view.setBackgroundColor(Color.RED); //set the color to red
            // Delay of 2 seconds (200 ms) before changing back the color to black
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    view.setBackgroundColor(Color.BLACK); //set the color to black
                }
            }, 200);
        }
    });

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
相关资源
最近更新 更多