본문 바로가기
기타 개발 관련/안드로이드 개념 정리

안드로이드 - 햇갈리는 Toolbar와 ActionBar 정리

by 번데기 개발자 2019. 9. 20.
반응형

 

안드로이드의 ToolBar ActionBar 

 

안드로이드를 개발할때 항상 햇깔렸던 것중에 하나인 Toolbar와 Actionbar에 대해서 한번 정리를 해보겠습니다.

 

 

 

ActionBar와 ToolBar의 개념 및 차이점

 

과거 안드로이드는 ActionBar가 기본으로 존재하였고 그것을 커스터마이징 해서 각 앱에 맞게 변경해서 사용하였습니다.

 

툴바는 안드로이드 5.0 (API Level 21)부터 추가된 위젯(Widget)으로 앱에서 가장 중요한 액션 또는 자주 사용되는 액션들을 제공하는 앱바(AppBar)를 만들때 사용됩니다. 

 

예전에는 AppBar를 만들때 ActionBar클래스를 사용하여 만들어졌는데 그래서 AppBar를 ActionBar라고 부르기도 하며 아직까지 많은 곳에서 이 두 용어를 혼용해서 사용합니다.

 

 

 

그렇다면 왜 Toolbar가 나왔을까??

 

툴바가 나온 이유는 새로운 버전의 안드로이드가 릴리즈 됨에 따라 액션바의 다양한 기능들이 추가 되었기 때문에 필요성이 대두되게 되었습니다.

 

즉 기기에 설치된 액션바가 설치된 안드로이드 버전에 따라 다르게 동작하는 결과를 낳게 되었고 이는 개발자와 사용자 모두에게 불편한 결과를 만들게 되었습니다.

 

구글에서는 이러한 버전에 따라 동작이 달라지는 파편화 문제를 해결하고 하위 호환성(BackWard Compatibility)를 제공하기 위해 지원 라이브러리 (Support Library)를 사용하게 됩니다.

 

따라서 최근에 추가되는 앱바(App Bar)의 여러 기능들은 v7 AppCompat 지원 라이브러리의 Toolbar 위젯으로 구현되고 있습니다. 그리고 당연히 이런 하위 호환성을 지키기 위해서는 v7 AppCompat 지원 라이브러리의 툴바를 사용하여 앱바(App Bar)를 구현해야 합니다.

 

즉 결론적으로 v7 AppCompat 지원 라이브러리의 툴바 (android.support.v7.widget.Toolbar)를 사용하여 App Bar를 만들면 많은 종류의 기기에서 일관성 있는 App Bar의 동작을 확보할 수 있습니다.

 

 

 

ActionBar와 Toolbar의 사용법

 

액션바와 툴바를 사용할때는 어떤 차이점이 있는지 알아보겠습니다.

 

위에서 언급했듯이 안드로이드 버전에 따라 다르게 동작하는 액션바와는 다르게 툴바는 하위 호완성을 제공하기 때문에 많은 버전에서 일관성 있게 동작을 하는데요, 그래서 버전에 따른 동작 여부를 신경써서 구현할 필요가 없습니다.

 

액션바는 액티비티 내부에 기본적으로 포함된 요소입니다. 따라서 액티비티의 xml에 액션바 위젯을 추가하지 않아도 액티비티에 지정된 테마가 앱바(App Bar)를 지원하면, 액션바를 액티비티의 앱바(App Bar)로 사용할 수 있습니다.

 

그렇지만 툴바를 사용할때는 XML에 작성되는 다른 뷰들 (Button, 레이아웃) 등과 다르게 취급되지 않습니다. 그래서 툴바를 사용하기 위해서는 액티비티의 레이아웃 XML에 android.support.v7.widget.Toolbar를 추가한 다음, 액티비티에 “.NoActionBar”가 포함된 테마를 지정하여 기본 액션바가 사용되지 않게 만들어야 합니다. 그리고 마지막으로 액티비티의 setSupportActionBar() 메서드를 호출하면 툴바를 액티비티의 앱바(App Bar)로 사용할 수 있습니다.

 

액티비티에서 툴바가 View 위젯으로 다루어진다는 것은 스타일 변경, 위치 조절, 애니메이션 등등에 이점이 있습니다. 그리고 고정된 위치에 단 하나만 표시할 수 있는 액션바와는 다르게 툴바는 각각 분리된 영역에 여러개를 사용할 수 있습니다.

 

 

 

툴바 사용법 간단 정리

 

1. 사용할 액티비티의 레이아웃에 Toolbar 위젯을 추가합니다..

 

 

 

2. 현재 사용하는 테마의 스타일에 NoActionBar옵션을 추가합니다.

( Toolbar를 사용하기 위해 actionbar을 없애는 작업이 필요. )

 

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

 

 

3. setSupportActionBar를 출력하고 기타 옵션을 설정합니다.

 

 

 

 

 

참고)

 

https://hyesunzzang.tistory.com/44

https://recipes4dev.tistory.com/149

반응형