“由于我的CustomItem控件和一个Gauge控件同处于一个Form上,所以按上下左右键的时候,实际上被Form处理了,Form就认为上下左右键是在切换控件的焦点,而不会把这个按键事件传给我的CustomItem了。也就是说,我的写法一样不会得到上下左右键的按键事件。”
-- zhengyun
“一部手机是否实际支持CustomItem internal traversal,需要向getInteractionModes()方法查询才可知道,因为这是隐含的策略,并不是一定的。听说,在Nokia真机上,traverse好像并不好使用。
在我这里,这段代码在模拟器上能够使用,在真机上我不敢保证:
以下内容为程序代码:
???? protected boolean traverse(int dir,int viewportWidth,
??? int viewportHeight,int visRect_inout[])
? {
????????? System.out.println("Enter traverse");
???????? if(dir == Canvas.UP){
?????? System.out.println("traverse>>Press Up key!");
????????????? return true;
????????? }else if(dir == Canvas.DOWN){
???? System.out.println("traverse>>Press Down key!");
????????????? return true;
????????? }else if(dir == NONE){
???? System.out.println("traverse>>Press None key!");
????????????? return true;
????????? }
????????? return false;
? }
???? protected void traverseOut(){
???????? System.out.println("Enter traverse out");
???? }”
-- zhengyun
“protected boolean traverse(int dir, int viewportWidth, int viewportHeight,?? int[] visRect_inout) {
? switch (dir) {
? case Canvas.DOWN:
?? if (location == UPPER) {
??? location = IN;
?? } else {
? ??repaint();
??? location = LOWER;
??? return false;
?? }
?? break;
? case Canvas.UP:
?? if (location == LOWER) {
??? location = IN;
?? } else {
??? repaint();
??? location = UPPER;
??? return false;
?? }
?? break;
? case Canvas.LEFT:
?? System.out.println("LEFT");
?? break;
? case Canvas.RIGHT:
?? System.out.println("RIGHT");
?? break;
? }
? return true;
}
实际上在FORM里的左右键事件,也被用来处理焦点,只不过在CUSTOM ITEM里左右键没有响应,用上下键来处理焦点事件了。”
---hebaochen