Android
[Android] Toolbar
배현진
2023. 4. 30. 15:27
안드로이드 기본 툴바 커스텀하는 방법을 알아본다.
[ Android Studio - Java ]
1. 기본 ActionBar 사용하지 않게 만들기
/res/values/themes/themes.xml 들어가서 DarkActionBar -> NoActionBar로 변경
2. menu 폴더에 toolbar.xml 파일 만들기
menu 폴더가 없으면 res 폴더에 우클릭 New -> Android Resource Directory -> Resource type에 menu 설정
/res/menu/toolbar_menu.xml
<?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/action_search"
android:title="검색"
android:icon="@drawable/ic_baseline_search_24"
android:layout_centerHorizontal="true"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_settings"
android:title="설정"
android:icon="@drawable/ic_baseline_settings_24"
android:layout_centerHorizontal="true"
app:showAsAction="always" />
</menu>
+) showAsAction은 아이템 표시 상태를 의미
always -> 항상 표시
ifRoom -> 공간이 있을 경우 표시
3. layout xml 파일에 Toolbar위젯 추가하기
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/ToolbarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="@string/app_name">
</androidx.appcompat.widget.Toolbar>
4. 해당 activity에서 구현
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
startActivity(new Intent(this, ___Activity.class));
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
+) onCreate 안에서 제작한 toolbar를 액티비티의 appbar로 지정해준다.
onCreateOptionsMenu로 menu resource 파일의 내용을 appbar에 반영해준다.
-> 커스텀 한 모습대로 구현 완료
onOptionsItemSelected로 해당 toolbar에 존재하는 이벤트 구현해준다.
5. 툴바에 뒤로가기 버튼 만들기
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar); //액티비티의 앱바(App Bar)로 지정
ActionBar actionBar = getSupportActionBar(); //앱바 제어를 위해 툴바 액세스
actionBar.setDisplayHomeAsUpEnabled (true); // 앱바에 뒤로가기 버튼 만들기
}