我正在做一个有趣的计算器,代码在这篇文章中:
Start of activity not working Java
我的计算器中有很多按钮,其中一个按钮是我想用来清除文本框中文本框中文本的最后一个字符,当我按下它的时间超过x秒我希望它清除所有文字。
我已经搜索了很多帖子,并且我了解到使用处理程序的OnTouch方法适用于正在按下的内容,但是如何为我的按钮实现这两个方面?
提前感谢您的答案!
更新
我使用了Onclick监听器和OnLongClick监听器,它完全符合我的要求!
答案 0 :(得分:2)
您只想设置View.OnClickListener和View.OnLongClickListener,如下所示:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = mEditText.getText().toString();
if (s != null && s.length() > 0) {
mEditText.setText(s.substring(0, s.length()-1));
}
}
});
mButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mEditText.setText("");
return true;
}
});
答案 1 :(得分:1)
这样做:
Button myClearButton;
//After doing myClearButton = findViewById(int id) or other methods of getting your button call this method:
setClearButtonClickListeners(){
myClearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clearLastChar();
}
});
myClearButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
clearAllChars();
return true;
}
});
}
只需实现clearLastChar()和clearAllChars()方法;
答案 2 :(得分:1)
clearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clear();
Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_LONG).show();
});
clearButton.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(HomeSafeActivity.this, "Long preess", Toast.LENGTH_LONG).show();
yourEditText.setText("");
return true;
}
});
public void clear(){
Editable editableText = yourEditText.getEditableText();
int length = editableText.length();
if (length > 0) {
editableText.delete(length - 1, length);
}
}
答案 3 :(得分:0)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//
}
});
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//
return true;
}
});