2014-04-07 16 views
0

我的关键事件正在模拟器上工作,但是当我安装了我的应用程序时,我的手机无法识别其关键事件。帮助我在这 我使用View.onKey事件侦听器。 我的代码是: - 壳体1:e1.setOnKeyListener(新View.OnKeyListener(){重要事件在模拟器上工作,但在移动设备上不工作

 @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      Typeface type = Typeface.createFromAsset(getAssets(),"fonts/Respective_Swashes_Slanted.ttf"); 
       if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
       { 

        e2.setTypeface(type); 
        e2.setTextSize(30); 
        e2.setText(e1.getText()); 
       } 
      return false; 
     } 
    }); 



     break; 
    case 2: e1.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      Typeface type = Typeface.createFromAsset(getAssets(),"fonts/doridrobot.ttf"); 
       if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
       { 

        e2.setTypeface(type); 
        e2.setTextSize(30); 
        e2.setTextColor(Color.GREEN); 
        e2.setText(e1.getText()); 
       } 
      return false; 
     } 
    }); 

     break; 

壳体3:e1.setOnKeyListener(新View.OnKeyListener(){

 @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      Typeface type = Typeface.createFromAsset(getAssets(),"fonts/future.ttf"); 
       if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
       { 

        e2.setTypeface(type); 
        e2.setTextSize(30); 
        e2.setTextColor(Color.RED); 
        e2.setText(e1.getText()); 
       } 
      return false; 
     } 
    }); 

     break; 

情况下4:e1.setOnKeyListener(新View.OnKeyListener(){

@Override 
public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
    // TODO Auto-generated method stub 
    Typeface type = Typeface.createFromAsset(getAssets(),"fonts/flattered.ttf"); 
     if(arg2.getAction()==KeyEvent.ACTION_DOWN) 
     { 

      e2.setTypeface(type); 
      e2.setTextSize(30); 
      e2.setTextColor(Color.RED); 
      e2.setText(e1.getText()); 
     } 
    return false; 
} 

});

break; 

    } 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 
+0

我需要使用ontouch事件吗? – AnonymousDev

回答

1

documentation

当硬件密钥被分配到一个视图调用。这允许 听众有机会在目标视图之前作出响应。

软件键盘上的按键通常不会触发此方法,尽管在某些情况下有些人可能会选择这样做。不要 假设软件输入法必须是基于密钥的;即使是这样,它也可能以不同于预期的方式使用按键,所以没有可靠捕捉软输入按键的方法。

所以基本上如果你的设备没有硬件键盘那么onKey可能不会触发。 根据您的要求,您可以使用

onTouchListener - 在任何触摸事件

onClickListener调用 - 点击视图时调用。

或android提供的任何其他listeners

+0

如何使用onTouch事件来检测键盘按键是否被按下? – AnonymousDev

+0

我不确定是否有可靠的方法来检测onTouch事件中的键盘按键,因为它适用于任何视图。如果您使用的是文本字段,则可能需要使用[textWatcher](http://developer.android.com/reference/android/text/TextWatcher.html)。通常当键盘启动时,用户正在编辑某种文本字段。每当文本框中的内容发生变化时,文本观察者都会通知您。 – Naveed

+0

非常感谢.... – AnonymousDev

相关问题