建议中文软键盘中的文本状态android触发编辑文本的文本更改事件

Posted

技术标签:

【中文标题】建议中文软键盘中的文本状态android触发编辑文本的文本更改事件【英文标题】:suggest state of text in Chinese soft keyboard android triggers edit text's text changed event 【发布时间】:2015-08-27 03:44:26 【问题描述】:

我在编辑模式下自定义 EditText 和中文软键盘有问题: 我的带有 TextWatcher 的自定义 EditText:

@Override
public void afterTextChanged(Editable s) 
    ... // pre composing

    // I want to clear current text and append with a new text.
    edt.setText("");   // but this line remove 'suggestion state' of soft keyboard

    ... // transform text (ex: append '\n' to end)
    ... // finish composing

我所说的 '建议状态' 的意思是: - 软键盘是中文的,当我按下一个键(例如:'h')时,应该显示软键盘顶部的建议栏。我可以在建议栏中选择一个中文单词来撰写。

那么如何保持软键盘的当前状态呢? (或者我可以在没有明确软键盘“建议状态”的情况下清除当前文本吗?)

【问题讨论】:

【参考方案1】:

阅读TextView的源代码后,我看到了方法'append':

public void append(CharSequence text, int start, int end) 
    if (!(mText instanceof Editable)) 
        setText(mText, BufferType.EDITABLE);
    

    ((Editable) mText).append(text, start, end);

“追加”方法不会清除“建议状态”。

所以我改成:

...
Editable edtable = edt.getText();
edtable.clear();
edt.setText(edtable, BufferType.EDITABLE);
....

它可以正常工作。

【讨论】:

以上是关于建议中文软键盘中的文本状态android触发编辑文本的文本更改事件的主要内容,如果未能解决你的问题,请参考以下文章

显示软键盘时,Android 设备上的按钮单击事件未触发。

如何使用软键盘在输入编辑文本字段区域中键入自定义字体? [关闭]

当软键盘出现并且软键盘在编辑文本下方时,在布局中保持工具栏位置固定

Android 编辑文本动态时滑动到对应item底部和输入框(右边“发送”按钮下边软键盘)顶部对齐

CSS固定位置导致软键盘出现在android中的文本框上

以编程方式在android中的软输入键盘上禁用语音到文本按钮(麦克风)