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

时间:2017-08-10 16:14:38

标签: android keyboard

我已经创建了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;
  }

任何人都可以帮我实现下行吗?

2 个答案:

答案 0 :(得分:0)

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

    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即可。

我认为这样做效率很低,但定义上下的内容很容易。如果不看到更多代码,就很难说出你应该做些什么。

答案 1 :(得分:0)

如果你只想移动游标

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

尝试使用sendDownUpKeyEvents方法

sendDownUpKeyEvents(KeyEvent.KEYCODE_DPAD_RIGHT);

将完成这项工作。