2011-09-01 5 views
1

지금 내 안드로이드 장치의 메뉴 버튼을 누르고 있으면 소프트 키보드가 위로 당겨집니다.이 방법을 무시할 수 있습니까? 차라리이 버튼을 길게 터치하면 무슨 일이 일어나는지 선택하겠습니다.실제 메뉴 버튼에서 길게 터치 이벤트를 만들려면 어떻게해야합니까?

onKeyLongPress를 사용할 때 "뒤로"버튼을 누르고있을 때만 감지합니다. 메뉴 버튼에 대해이 작업을 수행하려면 어떻게해야합니까?

답변

2

이 경우 KeyEvent.Callback -class (KeyEvent.Callback 클래스의 하위 클래스이기 때문에 활동에도 사용할 수 있음)에서 제공하는 onKeyLongPress() -method를 사용할 수 있습니다.

이 작업을 수행하는 데 약간의 트릭이 있습니다. onKeyLongPress()- 메소드가 실행되지 않으므로 Android에서 "메뉴"버튼을 길게 누르는 추적을 추적해야합니다. 이것은 보통 onKeyDown() -method에서 이루어집니다.

그래서 코드는 다음과 같습니다

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     // this tells the framework to start tracking for 
     // a long press and eventual key up. it will only 
     // do so if this is the first down (not a repeat). 
     event.startTracking(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public boolean onKeyLongPress(int keyCode, KeyEvent event){ 
    if (keyCode == KeyEvent.KEYCODE_MENU){ 
     // Do what you want... 
     Toast.makeText(this, "I'm down!", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 
    return super.onKeyLongPress(keyCode,event); 
} 

article with further informations은 안드로이드 개발자 블로그에서 확인할 수 있습니다.

관련 문제