1. 서론
액션바를 구현하기위해 공식문서 https://developer.android.com/training/appbar/setting-up 와
https://recipes4dev.tistory.com/149 블로그를 참고해 만들어 보기 시작했다.
위에서 소개된 도구(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
'안드로이드 스튜디오[Android studio]' 카테고리의 다른 글
[안드로이드 스튜디오] MVC패턴, 리사이클러뷰를 이해하여 캘린더 구현 (0) | 2022.06.15 |
---|---|
[안드로이드]px를 dp로 변환 (0) | 2021.08.09 |
[안드로이드]Bitmap 이미지를 Base64로 html에 표시하기 (0) | 2021.08.05 |
[안드로이드]인터넷 이미지 다운로드 (0) | 2021.08.05 |
navigation drawer의 icon색이 바뀌지 않는 문제 해결 (0) | 2021.07.30 |