2014-08-29 3 views
0

Я разрабатываю IME для Android, который включает в себя некоторое выделение текста, вводимого пользователем цветом фона (с использованием SpannableString).Стилированный текст потерян в Android IME

Когда устройство повернуто и клавиатура перерисована, текст остается в поле ввода, введенном пользователем, однако весь стиль (то есть фоновый цвет) теряется.

Любые идеи, почему это может происходить и как обходить его?

ответ

0

Я нашел решение, которое не идеально, но оно работает.

Настроить переменную ExtractedText в классе обслуживания IME. В методе 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); 
} 
Смежные вопросы