1월, 2014의 게시물 표시

안드로이드 액션바에 오버플로 메뉴 강제하기

안드로이드에 하드웨어 메뉴키가 있는 경우에는 메뉴가 액션바의 오른쪽 끝에 오버플로 메뉴가 뜨지 않고 대신에 메뉴키를 눌렀을 때에만 화면의 아래쪽에서 빼꼼히 뜬다. 이건 디자인의 통일성에 있어서 좀 문제가 있다.
아래의 코드를 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)