【发布时间】:2014-08-29 11:52:41
【问题描述】:
我正在为 Android 开发一个 IME,其中包括使用背景颜色(使用 SpannableString)突出显示用户输入的文本。
当设备旋转并重新绘制键盘时,文本仍保留在用户输入的输入框中,但是所有样式(即背景颜色)都将丢失。
任何想法为什么会发生这种情况以及如何规避它?
【问题讨论】:
我正在为 Android 开发一个 IME,其中包括使用背景颜色(使用 SpannableString)突出显示用户输入的文本。
当设备旋转并重新绘制键盘时,文本仍保留在用户输入的输入框中,但是所有样式(即背景颜色)都将丢失。
任何想法为什么会发生这种情况以及如何规避它?
【问题讨论】:
我找到了一个不完美的解决方案,但它确实有效。
在 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);
}
【讨论】: