Android IME中丢失的样式文本
我正在为Android开发一个IME,其中包括一些用户输入的文本的高亮显示,并带有背景色(使用SpannableString) 旋转设备并重新绘制键盘时,文本仍保留在用户输入的输入框中,但是,所有样式(即背景色)都会丢失Android IME中丢失的样式文本,android,styling,ime,Android,Styling,Ime,我正在为Android开发一个IME,其中包括一些用户输入的文本的高亮显示,并带有背景色(使用SpannableString) 旋转设备并重新绘制键盘时,文本仍保留在用户输入的输入框中,但是,所有样式(即背景色)都会丢失 你知道为什么会发生这种情况,以及如何避免这种情况吗?我找到了一个解决方案,虽然并不完美,但它是有效的 在IME服务类中设置ExtractedText变量。 在OnConfiguration Changed方法中,获取提取的文本。然后在onStartInputView方法中,删除
你知道为什么会发生这种情况,以及如何避免这种情况吗?我找到了一个解决方案,虽然并不完美,但它是有效的 在IME服务类中设置ExtractedText变量。 在OnConfiguration Changed方法中,获取提取的文本。然后在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);
}