2010-02-06 72 views

回答

1

它似乎并不像一个非常好的事情做用户,但onkeydown事件可以用来禁用踢踏舞及活动中的长按搜索:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_SEARCH) { 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
6

我扩展了斯坦的答案,只禁用长按事件。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_SEARCH 
     && (event.getFlags() & KeyEvent.FLAG_LONG_PRESS) == KeyEvent.FLAG_LONG_PRESS) { 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
+0

@Styler,经常'(标志和面罩)'本身就足以满足一个''&& - 为什么'(旗&掩码)==掩码在你最近的(仍在等待的)编辑中是必要的吗? FLAG_LONG_PRESS是一个多位掩码,其中一个或多个底层位可能打开? – sarnold 2011-10-03 23:07:49

+0

@sarnold它没有编译我,直到我真的这样做'if(keyCode == KeyEvent.KEYCODE_SEARCH &&(event.getFlags()&KeyEvent.FLAG_LONG_PRESS)== KeyEvent.FLAG_LONG_PRESS)' – styler1972 2011-10-03 23:26:05

+0

我的理解是,它是必要的在Java中,因为'flags&MASK'是一个int/long,'&&'需要一个布尔值。但是,最好使用'(flags&FLAG_FOO)!= 0',这对拼写错误更有弹性(需要多长时间注意'(flags&FLAG_FOO)== FLAG_BAR'总是假?)。 – 2011-10-03 23:34:03

1

在Android 2.0的,你可以这样做:

@Override 
public boolean onKeyLongPress(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_CALL) { 
     // todo your code here 
     return true; 
    } 
    return super.onKeyLongPress(keyCode, event); 
}