我在Android上的OnKeyListener
上使用EditText
来识别键盘退格(删除)的时间,并自行删除字符(这样做是因为它'与外部服务同步的sa字段)。
有些人说使用TextWatcher
并处理其中一个textchanged事件。虽然这可能是一个可行的解决方案。我仍然尝试使用onKey
。
问题是onKey
仅在EditText
中没有文本(空)并按下退格时触发。如果有文本,则onKey
在删除所有文本之前不会被触发。
任何人在退格中的所有点击中触发onKey
时我缺少什么?
这是我的xml:
<EditText
android:id="@+id/trackpad_speller_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="false"
android:layout_margin="10dp"
android:layout_weight="0.8"
android:focusable="true"
android:focusableInTouchMode="true"
android:imeOptions="actionDone" />
我正在片段
上设置监听器 this.spellerInput.setOnKeyListener(this);
和我的OnKey
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL && event.getAction() == KeyEvent.ACTION_DOWN) {
if (presenter.getSpellerType() == SpellerType.FREE_SPELLER) {
Log.d(TAG, "backspace pressed and ignored for FREE_SPELLER");
return false;
} else {
Log.d(TAG, "backspace pressed for SEARCH_SPELLER");
presenter.deleteChar();
}
}
return true;
}
任何帮助将不胜感激!谢谢:D
答案 0 :(得分:0)
我不知道这是否是最好的方法,但我发现设置setInputType
EditText
的{{1}}可以解决问题并生成{{1}在所有退格点击中触发。
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
希望有所帮助