0
我正在開發針對Android的IME,其中包括用戶使用背景顏色(使用SpannableString)輸入的文本的某些高亮顯示。在Android IME中丟失的樣式文本
當設備旋轉並重新繪製鍵盤時,文本保留在用戶輸入的輸入框中,但所有樣式(即背景顏色)都會丟失。
任何想法,爲什麼會發生這種情況,以及如何規避它?
我正在開發針對Android的IME,其中包括用戶使用背景顏色(使用SpannableString)輸入的文本的某些高亮顯示。在Android IME中丟失的樣式文本
當設備旋轉並重新繪製鍵盤時,文本保留在用戶輸入的輸入框中,但所有樣式(即背景顏色)都會丟失。
任何想法,爲什麼會發生這種情況,以及如何規避它?
我找到了一個解決方案,這不是完美的,但它的工作原理。
在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);
}