[英]Android: soft keyboard Backspace on EditText not working
这就是发生的事情:活动 A 和 B 有一个EditText
并且它们都有IME_SEARCH
。 输入只能通过三星平板电脑上的软键盘完成。 在 Activity AI 上可以毫无问题地使用EditText
。 问题是,在我点击“空格”或每当我使用建议中的单词时,Activity BI 无法使用退格键擦除文本。 它的行为就像那里不再有文本。 如果我输入新字符,我可以将它们擦除到空格。
要点:
EditTexts
的 View 层次是相同的IME_SEARCH
处理的代码(通过setOnEditorActionListener
)是相同的TextWatcher
也相同android:configChanges="keyboardHidden|keyboard|orientation" android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified"
我在两个TextWatcher
beforeTextChanged
方法上设置了一个断点。 我插入了一个“空格”并点击了“退格”。 在活动 A 的Edittext
上,触发了该方法,但在活动 B 上未触发该方法。 我看不出发生这种情况的原因,因为两个Edittext
的属性配置相同。 我也尝试删除IME
选项,但行为保持不变。
有谁知道会发生什么?
编辑 1:
searchTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 0) {
btnClear.setVisibility(View.GONE);
} else{
btnClear.setVisibility(View.VISIBLE);
}
}
});
searchTxt.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
buildGrid();
return true;
}
return false;
}
});
编辑 2:布局层次结构如下。
<LinearLayout
... >
<include layout="@layout/title_bar" />
<RelativeLayout
...>
<EditText
...>
问题是,由于某种原因,活动B覆盖了dispatchKeyEvent()
并始终返回true
。 删除它解决了问题。
我有你面临的类似问题,我以某种方式设法偶然发现了解决方案。 显然,我已将 setOnKeyListener 设置为“返回 true”。 在我将其更改为“返回假”后,电话键盘完美运行,退格键再次在 edittext 上正常运行。 希望这可以帮助:
.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
...
return false;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.