1. 서론

액션바를 구현하기위해 공식문서 https://developer.android.com/training/appbar/setting-up 와

 

앱 바 설정하기  |  Android 개발자  |  Android Developers

가장 기본적인 형태의 작업 모음은 한쪽에는 활동 제목을 표시하고 다른 쪽에는 더보기 메뉴를 표시합니다. 앱 바는 이렇게 간단한 형태로도 유용한 정보를 사용자에게 제공하고 일관된 디자인

developer.android.com

https://recipes4dev.tistory.com/149 블로그를 참고해 만들어 보기 시작했다.

 

안드로이드 툴바 기본 사용법. (Android Toolbar)

1. 안드로이드 툴바(Toolbar)와 앱바(App Bar) 툴바(Toolbar)는 안드로이드 5.0 (API Level 21)부터 추가된 위젯(Widget)으로, 앱에서 가장 중요한 액션 또는 가장 자주 사용되는 액션들을 제공하는 앱바(AppBar)..

recipes4dev.tistory.com

위에서 소개된 도구(android.support.v7.widget.Toolbar)를 사용하기위해 의존성에

implementation 'com.android.support:appcompat-v7:27.1.1'를 추가해야하는데 실제로 추가해보면

Version 28 (intended for Android Pie and below) is the last version of the legacy support library, so we recommend that you migrate to AndroidX libraries when using Android Q and moving forward. The IDE can help with this: Refactor > Migrate to AndroidX...

라는 오류메시지를 뿜게된다. 말머리에 굳이 안드로이드 스튜디오 버전을 적은 것은 버전업에 따라 마이그레이션이 필요해지고 정보를 찾아 해매게 되어 적게 된 것이다.

마이그레이트가 필요하다니 안드로이드 스튜디오에서 원하는대로 해보자.

 

2. 구현

커스텀 액션바를 만들기 위해 위에서 언급한 액션바를 추가할 xml 파일에 <android.support.v7.widget.Toolbar> 대신 <com.google.android.material.appbar.MaterialToolbar>를 사용하도록 한다. 그리고 내 마음대로 커스텀을 하면된다.

예를 들어 가운데 정렬을 하기위해선 다음과같이 app:titlecentered="true"를 지정한다.

1
2
3
4
5
6
7
8
9
10
11
    <com.google.android.material.appbar.MaterialToolbar
        android:id="@+id/app_actionbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="?attr/actionBarTheme"
        app:title="Action Bar"
        app:titleCentered="true"
        app:titleTextColor="@color/black"
        android:elevation="4dp">
    </com.google.android.material.appbar.MaterialToolbar>
cs

위와같은 방법으로 정렬을 하지 않고 툴바 태그안에 레이아웃을 넣고 정렬을 하면 네비게이션 아이콘이나 메뉴 아이콘에 영향을 받게된다.

 

시험삼아 메뉴 아이콘을 추가해보자.

액션바에 추가할 메뉴 xml을 작성한다. (res/menu/)

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/test_action1"
        android:title="test1"
        app:showAsAction="never"/>
    <item
        android:id="@+id/test_action2"
        android:title="test2"
        app:showAsAction="never" />
</menu>
cs

액션바를 추가할 Activity에 (AppCompatActivity를 상속받은 Activity) 다음과 같은 onCreateOptionsMenu를 오버라이딩 해준 후 위에서 준비한 메뉴 xml 파일을 inflate 해준다.

1
2
3
4
5
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.actionbar_actions, menu);
        return true;
    }
cs

 

 

완성된 커스텀 액션바

 

 

참고:https://github.com/material-components/material-components-android/issues/2011

 

[Toolbar] How to center title of MaterialToolbar? · Issue #2011 · material-components/material-components-android

I am trying to center the title of the MaterialToolbar, tried to add android: gravity but it doesn't work. There is no info in the documentation on how to center it <androidx.coordinatorlayo...< p=""> </androidx.coordinatorlayo...<>

github.com

 

+ Recent posts