2015-05-06 4 views
3

Я использую android образец softkeyboard как учебный проект. Я добавил второй язык, и все работает для меня до сих пор. Однако одной из проблем было трудно решить. При изменении ориентации устройства от портрета к пейзажу я хотел бы, чтобы макет клавиатуры был включен. логика была бы:Пользовательский символ ориентации на клавиатуру Android/qwerty

// on orientation or configuration change 
if (currentKeyboard==mQwertyKeyboard) { 
      // keep as is 
      mCurKeyboard = mQwertyKeyboard ; 
}else if (currentKeyboard == mSymbolsKeyboard) { 
      // keep as is 
      mCurKeyboard = mSymbolsKeyboard; 
}else if (currentKeyboard == mSymbolsShiftedKeyboard) { 
      // keep as is 
      mCurKeyboard = mSymbolsShiftedKeyboard ; 
} 

Я попытался осуществить это в:

@Override 
public void onConfigurationChanged(Configuration newConfig) {...} 

внутри Softkeyboard.java, но не осуществиться. Спасибо заранее.

+0

Вы нашли ответ на свои вопросы здесь? Пожалуйста, опубликуйте его, если у вас есть что-то. Спасибо. – mohsenmadi

ответ

0

У меня была такая же проблема - я ее решил с помощью onConfigurationChanged(Configuration newConfig) и немного стороне кодирования

Если он удаляется, мой код будет менять ориентацию, но моя клавиатура не будет изменен. Поскольку мне нравится функция перераспределения родительского элемента, я создал массив, содержащий все клавиатуры, и после изменения ориентации я бы обновил массив так, чтобы массив клавиатуры имел нужные размеры.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 

    int currentKeyboard = 0; 
    boolean isShifted = kv.isShifted(); 
    for (int i = 0; i < keyboard.length; i++) { 
     if(kv.getKeyboard().equals(keyboard[i])){ 
      currentKeyboard = i; 
      break; 
     } 
    } 

    super.onConfigurationChanged(newConfig); 

    initializeKeyboardArray(); 
    setKeyboard(keyboard[currentKeyboard]); 
    kv.setShifted(isShifted); 

} 

private void initializeKeyboardArray(){ 
    keyboard = new Keyboard[7]; 
    keyboard[ARABIC] = arabic; 
    keyboard[ARABIC_SHIFT] = arabicShift; 
    keyboard[ARABIC_SYMBOLS] = arabicSymbols; 
    keyboard[ARABIC_SYMBOLS_SHIFT] = arabicSymbolsShift; 
    keyboard[QWERTY] = qwerty; 
    keyboard[QWERTY_SYMBOLS] = qwertySymbols; 
    keyboard[QWERTY_SYMBOLS_SHIFT] = qwertySymbolsShift; 
}