android键盘keyborad中的key只有中间位置点击有效,如何让整个点击有效?

图片说明

问题:如上图中,只有红色区域点击有效,绿色区域点击无效(不是文字多少的问题)

在OnKeyboardActionListener中,

    @Override
    public void onPress(int primaryCode) {
        Log.e("111","===onPress==="+primaryCode);
    }
            @Override
    public void onKey(int primaryCode, int[] keyCodes) {
        Log.e("111","===onKey==="+primaryCode);
                    }

点击红色区域是正常的,会走这两个方法,点击绿色只会调onPress,而不会走onKey,他认为这不是一个key(NOT_A_KEY)

怎么才能让不管点击key的哪个部分都能算有效点击这个按键

个人给你一个解决思路!将你要执行的代码抽取出来成一个单独的方法!然后将绿色区域分别设置上点击事件!这样是可以达到你要的效果的!还有一个方法就是可能要修改的呢的ui界面!因为不知道你的ui界面布局是如何写的!所以不知道如何给出建议!

这边的处理是拉出了onPress 响应的primaryCode = 0 , 然后就直接是按 primaryCode == 0 来响应 按键 的事件

谢谢各位的回答,我找到原因所在,是因为getNearestKeys方法里通过坐标计算问题,重写Keyboard的getNearestKeys方法可解决。
@Override
public int[] getNearestKeys(int x, int y) {
List keys = getKeys();
Key[] mKeys = keys.toArray(new Key[keys.size()]);
int i = 0;
for (Key key : mKeys) {
if(key.isInside(x, y)) {
return new int[]{i};
}
i++;
}
return new int[0];
}


谢谢各位的回答,我找到原因所在,是因为getNearestKeys方法里通过坐标计算问题,重写Keyboard的getNearestKeys方法可解决。

  @Override
 public int[] getNearestKeys(int x, int y) {
         List<Key> keys = getKeys();
            Key[] mKeys = keys.toArray(new Key[keys.size()]);
            int i = 0;
            for (Key key : mKeys) {
            if(key.isInside(x, y)) {
                  return new int[]{i};
             }
             i++;
         }
         return new int[0];
}