如何在键入时进行振动,但不能在按退格键时进行振动

时间:2014-01-10 14:32:49

标签: android android-edittext android-vibration

我有以下代码:

@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中的任何内容都不匹配的角色时,它就会振动,并且它正常工作。问题是,当我按退格键/删除键时,它也会振动。这不是意图。

如何在输入错误的字母时允许振动,但在按退格键/ del键时不允许振动。我试过onTextChanged,但那不起作用。

1 个答案:

答案 0 :(得分:1)

我会保留输入文字的长度。当按退格/删除时,你基本上是删除了最后一个字符(长度正在减少),所以将新长度与旧长度进行比较。伪代码:

if newLength > oldLength then vibrate

else don't vibrate 

如果newLength较短,则表示您已按下退格键/删除键并删除了一个字符,因此请勿振动。你可以在onTextChanged或者对你有意义的地方做到这一点。