2011-04-09 39 views
2

即时通讯在webview中显示网页内容,我想禁用Android键盘的全部4个箭头键。任何想法?如何禁用Android键盘的箭头键

编辑:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    int a; 
    Log.d("yourTag",""+event.getAction()); 
    System.out.println(a=event.getAction()); 
    System.out.println(keyCode); 
     if(event.getAction()==20){ 
     return true; 
     } 
     else if(event.getAction()==21){ 
      return true; 
     } 
     else if(event.getAction()==22){ 
      return true; 
     } 
     else{ 
       return true; 
     } 

    } 

滚动仍然存在,但返回键以及菜单键被禁用,为什么?我注意到,如果内容滚动,它将不会返回任何内容。一旦滚动结束它(log.d消息)返回0.

回答

1

你可以在onkeydown捕获它们吗?

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(event.getAction() == /*INSERT YOUR KEY*/){ 
    //do something with the arrows. or ignore them 
    //return true or false depending on if you want to "catch" the event i guess 
    }else{ 
     return super.onKeyDown(keyCode, event); 
    } 
} 

你只需要找到箭头键的代码,这不应该很难。你甚至可以只是Log.d你的event.getAction(),并按下它们,找出它们叫什么......

我真的不知道你在用你的调试代码做什么,但看看这个链接:http://developer.android.com/reference/android/view/KeyEvent.html关键事件。事件是整数。为什么不添加这个调试:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    Log.d("yourTag",""+event.getAction()); 
} 

并看看返回的是什么?我的猜测将是DPAD键之一,例如左(21)是你的目标

+0

@Nanne它返回0为两个箭头键和没有returna为antohr 2箭头键...我喜欢这个..系统。通过out.println(A = event.getAction()); \t \t 如果(event.getAction()==一个){ \t \t \t \t的System.out.println(a)的返回true; \t \t \t} else { \t \t System.out.println(“displays else”); \t return super.onKeyDown(keyCode,event); \t} \t \t} – vnshetty 2011-04-09 10:05:20

+0

查看已更新回答 – Nanne 2011-04-09 10:19:27

+0

@Naane yesyou是对的。但我想禁用按这些按钮的滚动。我怎样才能做到这一点? – vnshetty 2011-04-09 10:28:23