안드로이드의 Activity의 상단을 보면 ActionBar라는 것이 있었다. 그런데 안드로이드 API21 부터 ActionBar는 deprecated되고 ToolBar라는 것이 추가 되었다. ToolBar란 기존의 ActionBar를 대체하는 View의 일종이다. ToolBar란 View이기 때문에 기존의 ActionBar에서는 할수 없던 것, 또는 하기 어려웠던 것들을 쉽게 코드로 제어 할 수 있다. (위치제어 등…) 이제부터는 deprecated된 ActionBar대신 ToolBar를 사용해야 할 것 같다.
ActionBar VS ToolBar
ActionBar : View가 아니다. 따라서 위치나 내부 아이템을 제어하기 힘들다. ToolBar : View다. 따라서 기타 View처럼 제어하기가 슆다.
ToolBar 적용하기
안드로이드 스튜디오에서 Empty Activity로 진행한 예제다. 예제에서 사용된 아이콘 이미지등은 안드로이드스튜디오에서 재공하는 것들이다.
1.기존의 ActionBar 제거하기
위 빨간 표시의 액션바를 일단 제거해 보자. 안드로이드 프로젝트의 res/values/styles.xml 파일을 연다. Style태그의 parent속성 값을 Theme.AppCompat.Light.NoActionBar 로 바꾼다.
1 2 3 4 5 6 7 8 9 10 11 12 13
<resources>
<!-- Base application theme. --> <!-- 변경된 소스 --> <stylename="AppTheme"parent="Theme.AppCompat.Light.NoActionBar"> <!--<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">--> <!-- Customize your theme here. --> <itemname="colorPrimary">@color/colorPrimary</item> <itemname="colorPrimaryDark">@color/colorPrimaryDark</item> <itemname="colorAccent">@color/colorAccent</item> </style>
그리고 다시 애뮬레이터를 동작시키면 아래처럼 ToolBar가 추가 된 것을 볼 수 있다. ActionBar와 모습은 똑같지만, 이녀석은 ToolBar이다.
3. ToolBar에 버튼을 추가하기(메뉴추가)
/res 경로에 menu라는 Android resource directory를 만든다. 여기서 이 디렉토리명은 반드시 menu로 지정해야 한다. 새로 생성한 menu 디렉토리 안에 menu.xml 파일을 생성한다. 그리고 아래의 내용물을 채워 넣자. menu.xml로 ToolBar에 들어갈 항목(메뉴)의 레이아웃을 정의한다. item태그에 icon은 안드로이드스튜디오에서 제공하는 asset image나 svg를 사용했다.
//추가된 소스, ToolBar에 추가된 항목의 select 이벤트를 처리하는 함수 @Override publicbooleanonOptionsItemSelected(MenuItem item){ //return super.onOptionsItemSelected(item); switch (item.getItemId()) { case R.id.action_settings: // User chose the "Settings" item, show the app settings UI... Toast.makeText(getApplicationContext(), "환경설정 버튼 클릭됨", Toast.LENGTH_LONG).show(); returntrue;
default: // If we got here, the user's action was not recognized. // Invoke the superclass to handle it. Toast.makeText(getApplicationContext(), "나머지 버튼 클릭됨", Toast.LENGTH_LONG).show(); returnsuper.onOptionsItemSelected(item);
} } }
[MainAcitivity.java]
다시 에뮬레이터를 동작 시키면 다음과 같이 Toolbar에 아이콘 형태의 item이 추가된 것을 볼 수 있다.
4.툴바 왼쪽에 버튼 추가하기
이번엔 Toolbar의 왼쪽에 버튼을 추가해 보자. MainActivity.java파일로 가서 onCreate 함수에 아래처럼 코드를 추가하자.