안드로이드 액션바에 오버플로 메뉴 강제하기
안드로이드에 하드웨어 메뉴키가 있는 경우에는 메뉴가 액션바의 오른쪽 끝에 오버플로 메뉴가 뜨지 않고 대신에 메뉴키를 눌렀을 때에만 화면의 아래쪽에서 빼꼼히 뜬다. 이건 디자인의 통일성에 있어서 좀 문제가 있다.
아래의 코드를 onCreate() 메서드 안에 삽입하면 하드웨어 메뉴키가 있는 경우에도 액션바에 오버플로 메뉴 형태로 표시되게 강제할 수 있다. 물론 메뉴키를 누르면 오버플로 버튼을 클릭한 것처럼 화면의 우측상단에 메뉴 목록이 나타난다.
단, 기본 액션바에서만 되고, 콤팻이나 셜록 액션바에서는 안되는 듯 하다.
(http://stackoverflow.com/a/11438245)
아래의 코드를 onCreate() 메서드 안에 삽입하면 하드웨어 메뉴키가 있는 경우에도 액션바에 오버플로 메뉴 형태로 표시되게 강제할 수 있다. 물론 메뉴키를 누르면 오버플로 버튼을 클릭한 것처럼 화면의 우측상단에 메뉴 목록이 나타난다.
// 하드웨어 메뉴키가 있더라도 액션바의 오버플로 메뉴를 사용하도록 강제한다.
try {
ViewConfiguration config = ViewConfiguration. get( this);
Field menuKeyField = ViewConfiguration.class .getDeclaredField( "sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible( true );
menuKeyField.setBoolean(config, false );
}
} catch (Exception ex) {
;
}
단, 기본 액션바에서만 되고, 콤팻이나 셜록 액션바에서는 안되는 듯 하다.
(http://stackoverflow.com/a/11438245)
댓글
댓글 쓰기