我正在开发一款适用于Android的IME,其中包括用户使用背景颜色(使用SpannableString)输入文本的一些突出显示。
当设备旋转并重新绘制键盘时,文本将保留在用户输入的输入框中,但是,所有样式(即背景颜色)都将丢失。
为什么会发生这种情况以及如何规避它的任何想法?
答案 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);
}