如何在自定义Android键盘中定义向上和向下箭头

问题描述:

我已经创建了Android键盘,并且我正在创建箭头来移动用户输入中的光标,我可以左右移动,但我无法知道如何编写代码的上下..这里是代码如何在自定义Android键盘中定义向上和向下箭头

switch (arrow){ 
    case KEY_LEFT: 
     CharSequence leftText = getCurrentInputConnection().getTextBeforeCursor(1000, 0); 
     int leftLen = leftText.length() ; 
     getCurrentInputConnection().setSelection(leftLen-1, leftLen-1); 
     break; 
    case KEY_RIGHT: 
     CharSequence rightText = getCurrentInputConnection().getTextBeforeCursor(1000, 0); 
     int rightLen = rightText.length() ; 
     getCurrentInputConnection().setSelection(rightLen+1, rightLen+1); 
     break; 
    case KEY_UP: case KEY_DOWN: 
    break; 
    } 

任何一个可以帮助我实现了down和up?

如果你只是想移动光标

https://developer.android.com/reference/android/inputmethodservice/InputMethodService.html#sendDownUpKeyEvents(int)

尝试使用sendDownUpKeyEvents方法

sendDownUpKeyEvents(KeyEvent.KEYCODE_DPAD_RIGHT); 

只会做的工作。

首先,我建议做这样的事情来检查按键

myEditText.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, 
          int keyCode, 
          KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) { 
       switch (keyCode) { 
        case KeyEvent.KEYCODE_DPAD_LEFT: 
         moveCursorLeft(); 
         return true; 
        case KeyEvent.KEYCODE_DPAD_RIGHT: 
         moveCursorRight(); 
         return true; 
        case KeyEvent.KEYCODE_DPAD_UP: 
         moveCursorUp(); 
         return true; 
        case KeyEvent.KEYCODE_DPAD_DOWN: 
         moveCursorDown(); 
         return true; 
       } 
      } 
      return false; 
     } 
    }); 

我会关闭你正在编写某种形式的文本编辑器的假设。

向上和向下的实现取决于你想要那些按钮做什么,以及你到目前为止如何实现的。例如,您可以将每条线路作为自己的EditText,并将其跟踪在ArrayList中。然后,每次添加新行时,可以将新的EditText添加到ArrayList。当用户向上或向下按下时,只需按照正确的方向将ArrayList的索引更改为1即可。

我想这样做会是一种非常低效的方式,但是很容易定义向上和向下做什么。如果没有看到更多的代码,就很难多说你应该做什么。

+0

不,我创建只是一个软的自定义键盘没有创建一个EditText ..这就是为什么我不能实现向下和向上游标..有没有任何帮助的想法,这可以做到这一点? –