Android 用另一个按钮按下模拟一个按钮按下
我现在想有一个按钮,当我按下它时,另一个按钮闪烁,就好像它被同时按下一样,并激活另一个按钮的功能。我目前的代码如下:Android 用另一个按钮按下模拟一个按钮按下,android,kotlin,Android,Kotlin,我现在想有一个按钮,当我按下它时,另一个按钮闪烁,就好像它被同时按下一样,并激活另一个按钮的功能。我目前的代码如下: fun onTwo(view: View) { button1.callOnClick() button1.isPressed = true } 然而,我面临的问题是,它会冻结按钮1,就好像它被按下一样,直到再次按下为止。有人对此有解决方案吗?您可以在其中一个按钮中添加侦听器以检查单击,然后
fun onTwo(view: View) {
button1.callOnClick()
button1.isPressed = true
}
然而,我面临的问题是,它会冻结按钮1,就好像它被按下一样,直到再次按下为止。有人对此有解决方案吗?您可以在其中一个按钮中添加侦听器以检查单击,然后使用该事件触发另一个按钮中的单击事件,如下所示:
val button1=findViewById(R.id.btn1ID)作为按钮
button1.setOnClickListener{
val button2=findViewById(R.id.btn2ID)作为按钮
按钮2.performClick()
}
用各自的id(a)替换R.id.btn1ID
和R.id.btn2ID
参考资料:
您还可以创建一个实用程序函数来使用它,而无需生成如下冗余变量:
@Suppress(“未选中的\u CAST”)
有趣的活动。findButtonById(@IdRes:Int):按钮=
findViewById(res)as按钮
//然后在创建活动方法中:
findButtonById(R.id.btn1ID).setOnClickListener{
findButtonById(R.id.btn2ID).performClick()
}
尝试下面的performClick()方法:
fun onTwo(view: View)
{
button1.performClick()
}
最后,我使用协同程序解决了这个问题:
fun onTwo(view: View){
GlobalScope.async{
delay(100)
button1.isPressed = false
GlobalScope.cancel()
}
button1.setPressed(true)
button1.performClick()
}
请为这个问题提供一个完整的、最少的示例,以便其他人可以重新创建它。PerformClick()似乎在做与callOnClick相同的事情,而不是更改按下的状态感谢您的输入。不幸的是,我发现performClick()的作用与callOnClick()相同,并且不会更改按下的按钮state@matparrottandroid文档说,它执行与点击相关的所有正常操作:报告可访问性事件、播放声音等。,您的代码可能有问题,你能发布你的代码吗?经过更多的研究,你是正确的,问题是安卓实现点击的速度太快,以至于无法在屏幕上注册。因此,我认为我需要某种形式的延迟。