2016-03-22 8 views
0

新しい文字キーボードを追加する必要があります。現在の文字キーボードは英数字です。私はキーボード間の切り替えに助けを得ることは素晴らしいことです。私はキーボードを準備していますが、スイッチ部分だけが残っています。クリックキーコードに別のキーボードを追加する方法

以下のメインコードがあります。

public class SimpleIME extends InputMethodService implements OnKeyboardActionListener { 

    private KeyboardView kv; 
    private Keyboard keyboard; 

    private boolean caps = false; 

    @Override 
    public void onKey(int primaryCode, int[] keyCodes) { 
    InputConnection ic = getCurrentInputConnection(); 
    playClick(primaryCode); 
    switch(primaryCode){ 
     case Keyboard.KEYCODE_DELETE : 
      ic.deleteSurroundingText(1, 0); 
      break; 
     case Keyboard.KEYCODE_SHIFT: 
      caps = !caps; 
      keyboard.setShifted(caps); 
      kv.invalidateAllKeys(); 
      break; 
     case Keyboard.KEYCODE_DONE: 
      ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 
      break; 
     default: 
      char code = (char)primaryCode; 
      if(Character.isLetter(code) && caps){ 
       code = Character.toUpperCase(code); 
      } 
      ic.commitText(String.valueOf(code),1); 
     } 
    } 

    @Override 
    public void onPress(int primaryCode) { 
    } 

    @Override 
    public void onRelease(int primaryCode) { 
    } 

    @Override 
    public void onText(CharSequence text) { 
    } 

    @Override 
    public void swipeDown() { 
    } 

    @Override 
    public void swipeLeft() { 
    } 

    @Override 
    public void swipeRight() { 
    } 

    @Override 
    public void swipeUp() { 
    } 

    @Override 
    public View onCreateInputView() { 
    kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null); 
    keyboard = new Keyboard(this, R.xml.qwerty); 
    kv.setKeyboard(keyboard); 
    kv.setOnKeyboardActionListener(this); 
    return kv; 
    } 

    private void playClick(int keyCode) { 
    AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE); 
    switch (keyCode) { 
     case 32: 
      am.playSoundEffect(AudioManager.FX_KEYPRESS_SPACEBAR); 
      break; 
     case Keyboard.KEYCODE_DONE: 
     case 10: 
      am.playSoundEffect(AudioManager.FX_KEYPRESS_RETURN); 
      break; 
     case Keyboard.KEYCODE_DELETE: 
      am.playSoundEffect(AudioManager.FX_KEYPRESS_DELETE); 
      break; 
     default: 
      am.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD); 
    } 
    } 
} 

答えて

0

私はこの質問は年前に頼まれたけど、それは他の人々を助けるかもしれないので、私はあなたに答えを与えるでしょう。次のコードはその下

: "ケースKeyboard.KEYCODE_DONE: ic.sendKeyEvent(新しいのKeyEvent(KeyEvent.ACTION_DOWN、KeyEvent.KEYCODE_ENTER)); ブレーク;" ":; kv.setKeyboard(キーボード); ブレーク; キーボード=新しいキーボード(これ、R.xml.symbols)ケース-201:" このコードを入れて

次に、qwerty.xmlファイルに移動し、コードに '-201'というコードを割り当てます。このボタンがユーザによって押されると、キーボードビューは 'symbols.xml'を表示するように切り替わります

関連する問題