안드로이드 액션바(ActionBar)는 기본적으로 앱의 타이틀을 보여주는 곳이다. 또한 여러가지 옵션 메뉴(Option Menu)들을 표시할 수도 있다.
액션바를 보이거나 감추고 싶다면 다음의 메소드를 사용하면 된다.
ActionBar actionbar = getActionBar(); //액션바 객체 참조
actionbar.hide(); //액션바 숨기기
actionbar.show(); //액션바 보이기
옵션 메뉴는 각각의 액티비티마다 설정할 수 있다. 옵션 메뉴를 설정하려면 아래의 메소드를 사용하면 된다.
boolean onCreateOptionsMenu(Menu menu) //액티비티가 만들어지면서 호출
boolean onOptionsItemSelected(MenuItem item) //메뉴의 아이템을 클릭했을 때 호출
이 메소드는 액티비티가 생성될 때 자동으로 호출되어 액티비티에 메뉴를 추가한다.
먼저 메뉴를 위한 XML 레이아웃을 만들어야 한다. /res 폴더에 'menu' 폴더를 추가하고 /res/menu 폴더에 메뉴를 위한 XML 레이아웃 리소스 파일을 생성하고 각각의 메뉴를 위한 <item\> 태그를 추가하면 된다. 이 XML 파일을 onCreateOptionsMenu()
메소드 안에서 인플레이션 한다. 그러면 액티비티가 만들어질 때 액션바에 자동으로 메뉴가 포함된다. 그리고 각각의 메뉴 아이템을 클릭했을 때 나타나기를 원하는 기능은 onOptionsItemSelected()
메소드에서 처리하면 된다.
<?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/menu_refresh"
android:title="새로고침"
android:icon="@drawable/menu_refresh"
app:showAsAction="always" />
<item android:id = "@+id/menu_search"
android:title="새로고침"
android:icon="@drawable/menu_search"
app:showAsAction="always" />
<item android:id = "@+id/menu_settings"
android:title="새로고침"
android:icon="@drawable/menu_settings"
app:showAsAction="always" />
</menu>
메뉴를 정의한 XML에는 '새로고침', '찾기', '설정' 3개의 아이템을 만들었다. 이제 이 레이아웃을 인플레이션하고 아이템을 클릭했을 때 처리하는 코드를 작성해보자.
package io.swnomad.sampleoptionmenu;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int curId = item.getItemId();
switch(curId){
case R.id.menu_refresh:
Toast.makeText(this, "새로고침", Toast.LENGTH_LONG).show();
break;
case R.id.menu_search:
Toast.makeText(this, "찾기", Toast.LENGTH_LONG).show();
break;
case R.id.menu_settings:
Toast.makeText(this, "설정", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
onCreateOptionsMenu()
메소드와 onOptionsItemSelected()
메소드를 재정의 해주었다. 각 아이템이 클릭되면 간단하게 토스트 메시지를 띄우도록 하였다.
앱을 실행하면 아래의 결과를 확인할 수 있다.
'안드로이드' 카테고리의 다른 글
(안드로이드) 34 - 웹뷰(WebView) (0) | 2020.05.18 |
---|---|
(안드로이드) 33 - 탭(Tab) (0) | 2020.05.18 |
(안드로이드) 31 - 프래그먼트 수명주기(Fragment LifeCycle) (0) | 2020.05.18 |
(안드로이드) 30 - 프래그먼트(Fragment) (0) | 2020.05.18 |
(안드로이드) 29 - 페이지 슬라이딩(Page Sliding) (0) | 2020.05.18 |