Android防止双击一个按钮

什么是防止双击Android中的按钮的最佳方法?

你可以用Kotlin扩展函数和RxBinding非常花哨的方式来做到这一点

fun View.clickWithDebounce(debounceTime: Long = 600L, action: () -> Unit): Disposable = RxView.clicks(this) .debounce(debounceTime, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe { action() } 

要么

 fun View.clickWithDebounce(debounceTime: Long = 600L, action: () -> Unit) { this.setOnClickListener(object : View.OnClickListener { private var lastClickTime: Long = 0 override fun onClick(v: View) { if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) return else action() lastClickTime = SystemClock.elapsedRealtime() } }) } 

然后只是:

 View.clickWithDebounce{ Your code } 

你可以使用这个方法。 通过使用后期延迟,您可以照顾双击事件。

void debounceEffectForClick(View view){

  view.setClickable(false); view.postDelayed(new Runnable() { @Override public void run() { view.setClickable(true); } }, 500); } 

更优选的解决方案是,

 onclick(){ btn.setEnabled(false); btn.setClickable(false); //yourwork myWork(); } myWork(){ //your tasks. btn.setEnabled(true); btn.setClickable(true); } 

作为一个链接可以轻松忽略,我不得不一再重复这一点