如何禁用多次点击按钮?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁用多次点击按钮?相关的知识,希望对你有一定的参考价值。
我有一个按钮,当点击显示一个对话框。但是当您多次快速单击该按钮时,它将在屏幕上显示2个或更多对话框。取决于在对话框显示之前单击按钮的次数。所以我必须多次关闭每个对话框......
我已经使用了dialog.isShowing,但是当你多次快速单击按钮时它似乎会忽略它。
...所以我想在关闭对话框时单击按钮。
private var mFlag = false
fun myButton(view : View) {
var tempDialog = AlertDialog.Builder(this).create()
if (!mFlag) {
myDialog.show()
mFlag = true
}
if(dialog.isShowing){
mFlag = false
}
}
答案
我已经制作了公共方法,以避免在视图上双击问题。
请检查这种方法,
/***
* To prevent from double clicking the row item and so prevents overlapping fragment.
* **/
public static void avoidDoubleClicks(final View view) {
final long DELAY_IN_MS = 900;
if (!view.isClickable()) {
return;
}
view.setClickable(false);
view.postDelayed(new Runnable() {
@Override
public void run() {
view.setClickable(true);
}
}, DELAY_IN_MS);
}
您可以通过以下方式使用该方法,
buttonTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(String clickedText) {
Utils.avoidDoubleClicks(alertViewHolder.tv_alert);
// Rest code here for onlick listener
});
Or another way is,
private long lastClickTime = 0;
View.OnClickListener buttonHandler = new View.OnClickListener() {
public void onClick(View v) {
// preventing double, using threshold of 1000 ms
if (SystemClock.elapsedRealtime() - lastClickTime < 1000){
return;
}
lastClickTime = SystemClock.elapsedRealtime();
}
}
以上是关于如何禁用多次点击按钮?的主要内容,如果未能解决你的问题,请参考以下文章