问题:如上图中,只有红色区域点击有效,绿色区域点击无效(不是文字多少的问题)
在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];
}