gpt4 book ai didi

android - 如何在为 Android 中的 EditText 按下删除/后退按钮时快速删除文本?

转载 作者:太空狗 更新时间:2023-10-29 16:39:50 26 4
gpt4 key购买 nike

在计算器应用程序中,当返回/删除按钮被按下而不是松开时,手机会振动并很快删除输入的数字。

我有一个 EditText View ,当按下后退/删除按钮时,它只会删除一个字符,我必须释放并再次按下它才能删除下一个字符。如何使后退/删除按钮在按下时快速删除,并使手机振动,与计算器应用程序中的后退/删除按钮的行为相同?

这是我的 EditText 配置

    <EditText
android:id="@+id/left_value"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="5"
android:background="@drawable/border"
android:hint="@string/enter_numerial"
android:inputType="numberDecimal|numberSigned"
android:textSize="14sp"
android:paddingLeft="2dip"
android:maxLength="15"/>

最佳答案

我想这不是最好的解决方案,但它会满足您的需求。

1).让您的 Activity 实现 View.OnTouchListener 并设置它

   yourButton.setOnTouchListener(this);

2).创建 CountDownTimer 类型的类字段。我称之为 mTimer。

将以下内容添加到 OnTouch() 方法中:

 @Override
public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

deleteChar();

break;

case MotionEvent.ACTION_MOVE:
/*--- no action required ---*/
break;

case MotionEvent.ACTION_UP:

mTimer.cancel();

break;
}


return false;
}
});

3). deleteChar() 方法:

    private void deleteChar(){
// set the desired interval. I'm gonna use 500ms before last char deletion.
mTimer = new CountDownTimer(9999999, 500) {

@Override
public void onTick(long millisUntilFinished) {
if(yourEditText.getText().toString().length() > 0){
String input = yourEditText.getText().toString();
input = input.substring(0, input.length()-1);
yourEditText.setText(input);
}

}

@Override
public void onFinish() {

}
};
mTimer.start();
}

以上示例以 1/2 秒的间隔删除 EditText 的最后一个字符。在需要时使用 Vibrator 对象。

肯定可以优化此代码。这应该只是让您了解如何执行您所要求的内容。

关于android - 如何在为 Android 中的 EditText 按下删除/后退按钮时快速删除文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19801920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com