繁体   English   中英

Android:EditText 上的软键盘退格键不起作用

[英]Android: soft keyboard Backspace on EditText not working

这就是发生的事情:活动 A 和 B 有一个EditText并且它们都有IME_SEARCH 输入只能通过三星平板电脑上的软键盘完成。 在 Activity AI 上可以毫无问题地使用EditText 问题是,在我点击“空格”或每当我使用建议中的单词时,Activity BI 无法使用退格键擦除文本。 它的行为就像那里不再有文本。 如果我输入新字符,我可以将它们擦除到空格。

要点:

  1. 包含EditTexts的 View 层次是相同的
  2. 配置IME_SEARCH处理的代码(通过setOnEditorActionListener )是相同的
  3. 两者的TextWatcher也相同
  4. 在 Manifest 中,两个活动都配置为
    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM