백 스페이스 키를 누르면 입력하는 동안 계속 진동하는 방법
-
21-12-2019 - |
문제
다음 코드가 있습니다.
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
data = (ArrayList<SetRows>)results.values;
EditText etS = (EditText) ((Activity)context).findViewById(R.id.etSearch);
if (data.isEmpty()) {
etS.setTextColor(Color.parseColor("#FFCC0000"));
Vibrator vb = (Vibrator) ((Activity)context).getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 100 milliseconds
vb.vibrate(100);
}
if (!data.isEmpty()) {
etS.setTextColor(Color.parseColor("#FF27497B"));
}
notifyDataSetChanged();
clear();
for(int i = 0, l = data.size(); i < l; i++)
add(data.get(i));
notifyDataSetInvalidated();
}
.
ListView
에서 아무 것도 일치하지 않는 문자로 들어 가지 않아도됩니다.이 문제는 Backspace / Delete 키를 누를 때도 진동합니다.그것은 의도가 아닙니다.
잘못된 문자를 입력하면서 진동을 허용하지만 백 스페이스 / DEL 키를 누를 때는 그렇지 않습니다.나는 onTextChanged
를 시도했지만 그것이 작동하지 않았습니다.
해결책
입력 한 텍스트의 길이를 유지할 것입니다.백 스페이스 / 삭제를 누르면 기본적으로 마지막 문자가 지워집니다 (길이가 줄어들고 있으므로 새 길이를 오래된 길이와 비교하십시오.의사 코드 :
if newLength > oldLength then vibrate
else don't vibrate
.
newLength가 짧으면 백 스페이스 / 삭제 키를 누르고 문자를 삭제 했으므로 진동하지 마십시오.OntextChanged에서 또는 당신에게 의미가있는 곳에서 그것을 할 수 있습니다.
제휴하지 않습니다 StackOverflow