今天封装了一个带删除按钮的EditText,想用这个按钮做到软件键盘按钮一样删除,即点击时删除一个而长按时可以连续删除,直到放开或者文本被删除完毕。
整理了一下button OnClickListener 和 OnLongClickListener两个回调接口,利用OnLongClickListener在按下就响应(有一定时间的) 而OnClickListener 在松开才响应。
因此可以在长按时间触发后开始删除文本字符串, 知道获得短按时间后停止。那么这个基本完成所需的要求。
下面说说具体实现代码:
首先重写点击和长按事件,并在长按时启动删除字符的线程,在点击事件(手放开时)停止线程。
// 添加按钮点击事件
ib.setOnClickListener(new OnClickListener() { // 点击
@Override
public void onClick(View v) {
if(ONLONGCLICKDOWN != 1){ // 非常长按事件
Log.e(TAG, "-----setOnClickListener--------------->>>");
inputStr = removeLastStr(inputStr);
if(inputStr == null){
inputStr = "";
hideBtn();// 隐藏按钮
}
et.setText(inputStr);// 设置输入框内容为空
}
ONLONGCLICKDOWN = 0;
flag = true;
//
}
});
ib.setOnLongClickListener(new OnL