앱바는 애플리케이션 화면 상단의 UI 요소로서, 액티비티의 제목을 나타내는 타이틀과 앱 레벨의 탐색을 위한 액션 아이템, 오버 플로 메뉴(옵션 메뉴) 등으로 구성됨
Android 3.0(API 레벨 11)부터는, 기본 테마를 사용하는 모든 액티비티에는 ActionBar가 앱바로 제공
Toolbar 가장 최신 앱바의 기능이 포함된 지원 라이브러리로서, Toolbar를 앱바로 사용하면 어떤 버전의 Android 시스템이던지 상관없이 최신 앱바의 기능을 사용할 수 있습니다.
액티비티에 앱바를 설정 방법은 크게 두 가지로 구분됩니다.
아래 XML 코드로 main_menu.xml 파일 내용을 업데이트
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/quick_action1"
android:title="Quick1"
android:icon="@drawable/ic_android_black_24dp"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:icon="@drawable/ic_settings_black_24dp"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_subactivity"
android:title="Sub Activity"/>
</menu>
android:title 속성에 설정된 @string/action_settings를 정의하기 위해서 res/values 폴더 내의 strings.xml 리소스를 열고 다음 항목을 추가
<string name="action_settings">설정</string>
예제
public class MainActivity extends AppCompatActivity {
// ... 생략
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}
}
사용자가 옵션 메뉴에서 항목(앱 바의 작업 항목 포함)을 선택하면, 시스템이 액티비티의 onOptionsItemSelected() 메서드를 호출합니다.
예제
public class MainActivity extends AppCompatActivity {
// ... 생략
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.quick_action1:
Toast.makeText(getApplicationContext(), "action_quick", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_settings:
Toast.makeText(getApplicationContext(), "action_settings", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_subactivity:
startActivity(new Intent(this,SubActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
앱에서 사용자가 기본 화면으로 돌아가는 방법
manifest에서 android:parentActivityName 속성을 설정
android:parentActivityName 속성은 Android 4.1(API 레벨 16)부터 도입되었습니다. 이전 버전의 Android를 실행하는 기기를 지원하려면
android.support.PARENT_ACTIVITY이고, 값은 상위 액티비티의 이름
SubActivity의 상위 액티비티가 MainActivity인 경우
<application … >
<activity
android:name=".SubActivity"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
</application>
상위 액티비티가 있는 액티비티 (가령, SubActivity)에 '위로' 버튼의 사용을 설정하려면 앱바의 setDisplayHomeAsUpEnabled(true)를 해당 액티비티를 생성할 때 호출합니다.
플랫폼의 ActionBar를 사용하는 경우
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
}
지원 라이브러리의 Toolbar를 사용하는 경우
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
// my_child_toolbar is defined in the layout file
Toolbar myChildToolbar =
(Toolbar) findViewById(R.id.my_child_toolbar);
setSupportActionBar(myChildToolbar);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
}