지금 내 안드로이드 장치의 메뉴 버튼을 누르고 있으면 소프트 키보드가 위로 당겨집니다.이 방법을 무시할 수 있습니까? 차라리이 버튼을 길게 터치하면 무슨 일이 일어나는지 선택하겠습니다.실제 메뉴 버튼에서 길게 터치 이벤트를 만들려면 어떻게해야합니까?
onKeyLongPress를 사용할 때 "뒤로"버튼을 누르고있을 때만 감지합니다. 메뉴 버튼에 대해이 작업을 수행하려면 어떻게해야합니까?
지금 내 안드로이드 장치의 메뉴 버튼을 누르고 있으면 소프트 키보드가 위로 당겨집니다.이 방법을 무시할 수 있습니까? 차라리이 버튼을 길게 터치하면 무슨 일이 일어나는지 선택하겠습니다.실제 메뉴 버튼에서 길게 터치 이벤트를 만들려면 어떻게해야합니까?
onKeyLongPress를 사용할 때 "뒤로"버튼을 누르고있을 때만 감지합니다. 메뉴 버튼에 대해이 작업을 수행하려면 어떻게해야합니까?
이 경우 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은 안드로이드 개발자 블로그에서 확인할 수 있습니다.