Android IME中丢失了样式文本

时间:2014-08-29 11:52:42

标签: android styling ime

我正在开发一款适用于Android的IME,其中包括用户使用背景颜色(使用SpannableString)输入文本的一些突出显示。

当设备旋转并重新绘制键盘时,文本将保留在用户输入的输入框中,但是,所有样式(即背景颜色)都将丢失。

为什么会发生这种情况以及如何规避它的任何想法?

1 个答案:

答案 0 :(得分:0)

我找到了一个不完美的解决方案,但它确实有效。

在IME服务类中设置ExtractedText变量。 在OnConfigurationChanged方法中,获取提取的文本。然后在onStartInputView方法中,删除绑定编辑器中的文本,并将其替换为提取的文本。

@Override
public void onConfigurationChanged (Configuration newConfig)
{
    //get what's been input so far
    ExtractedTextRequest req = new ExtractedTextRequest();
    req.token = 0;
    req.flags = InputConnection.GET_TEXT_WITH_STYLES;
    extractedText = ic.getExtractedText(req, 0);

    super.onConfigurationChanged(newConfig);

}

@Override public void onStartInputView(EditorInfo attribute, boolean restarting) {
   ...
    if(extractedText!=null)
    {
        if(ic.deleteSurroundingText(9999, 0))
        {
            ic.commitText(extractedText.text, 1);
            Log.i("onStartInputView", "Text Replaced");
        }
        else
        {
            Log.i("onStartInputView", "IC not valid");
        }
    }

    super.onStartInputView(attribute, restarting);
}