1
这就是发生了什么事情: 活动A和B有一个EditText
,它们都有IME_SEARCH
。输入只能通过SAMSUNG平板电脑上的软键盘完成。 关于活动A我可以毫无问题地使用EditText
。问题在于,在活动B中,我无法在“空格”或每次使用建议中的单词后使用退格删除文本。它的行为就像那里没有文字了。如果我输入新字符,我可以将它们删除到空间。Android:软键盘EditText上的Backspace不起作用
要点:
- 包含
EditTexts
是相同的视图层次 - 构成所述
IME_SEARCH
处理(经由setOnEditorActionListener
)的代码是相同 - 两者的
TextWatcher
也是相同 - 在清单中,两个活动都配置为
android:configChanges="keyboardHidden|keyboard|orientation" android:windowSoftInputMode="stateAlwaysHidden|adjustUnspecified"
我设置在两个TextWatcher
的方法beforeTextChanged
一个断点。我插入了一个'空格'并打'退格'。在活动A的Edittext
上,该方法被触发,但在活动B上不被触发。由于Edittext
的属性配置完全相同,我不能看到发生这种情况的原因。 我也尝试删除IME
选项,但行为保持不变。
有谁知道会发生什么?
EDIT 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
...>
你能分享文本观察者吗? – toshkinl
@toshkinl当然,我刚刚添加它 – luizfzs
似乎很好。 “这些建议中的词”在最后增加了空间,这就是为什么你不能抹去,而不是因为这些建议。你确定这两种布局与EditText的活动之间没有差异吗? – toshkinl