2014-08-29 70 views
0

我正在開發針對Android的IME,其中包括用戶使用背景顏色(使用SpannableString)輸入的文本的某些高亮顯示。在Android IME中丟失的樣式文本

當設備旋轉並重新繪製鍵盤時,文本保留在用戶輸入的輸入框中,但所有樣式(即背景顏色)都會丟失。

任何想法,爲什麼會發生這種情況,以及如何規避它?

回答

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); 
}