728x90
반응형
안드로이드 액티비티 화면 앱바(정확히는 툴바)에 버튼을 만들어주려고 한다. 버튼 하나이기 때문에 한가지의 기능만 한다.
1. Menu Resource File 생성
app의 res/menu 폴더에서 메모 리소스 xml 생성
그럼 요렇게 뜨는데, 왼쪽의 메뉴 Menu Item을 컴퍼넌트 트리/menu 안에 넣어 새로 생성한다.
그럼 이렇게 드롭메뉴가 기본으로 생성되는데, 나는 버튼만 원하니 드롭메뉴를 없애주겠다.
그러기 위해 xml 코드를 연다.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Item" />
</menu>
아래와 같이 바꿔주었다.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="이 메뉴를 사용할 액티비티경로">
<item
android:id="@+id/action_save"
android:orderInCategory="100"
android:title="SAVE"
app:showAsAction="always" />
</menu>
액티비티 경로 예시 (app/java 하위 폴더 이름)
tools:context = "com.example.myproject.MainActivity"
title 대신 icon을 지정해주어도 된다. title과 icon 둘다 지정했다면 icon만 보인다.
<item
android:id="@+id/action_save"
android:icon="@android:drawable/ic_menu_save"
android:title="SAVE"
android:orderInCategory="100"
app:showAsAction="always" />
2. Activity에 메뉴 리소스 지정
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.메뉴리소스파일명, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.메뉴리소스의 버튼ID값:
//동작내용
return true;
}
return super.onOptionsItemSelected(item);
}
메뉴를 사용할 액티비티 클래스에 onCreateOptionsMenu, onOptionsItemSelected 함수를 오버라이트해준다.
직접 코드를 작성해도되지만, 마우스 우클릭>Generate...>Override Methods... 로도 만들 수 있다.
아래는 앞서 내가 지정한 버튼 ID로 작성했고, 뒤로가기 버튼도 넣은 모습이다.
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.action_save:
//동작
return true;
}
돌려보니 잘 나타난다.
728x90
반응형
'studies > Mobile Application' 카테고리의 다른 글
[Android/Kotlin] Horizontal 가로 슬라이드 Recycler View 사용하기 (완전 쉬움) (0) | 2021.05.15 |
---|---|
Android remove shadow at button (0) | 2021.04.30 |
안드로이드 스튜디오 SDK 오류 / 실제 기기에서 실행 안됨 에러 해결 (2) | 2020.11.03 |
안드로이드 스튜디오 에디터 폰트 크기 설정 / Setting Android Studio Editor font size control option (0) | 2020.11.03 |
ViewHolder class에서 Toast 띄우기, 안됨 해결하기 / Android Java (0) | 2020.10.26 |