앱 바 설정하기

가장 기본적인 형태의 작업 모음은 한쪽에는 활동 제목을 표시하고 다른 쪽에는 더보기 메뉴를 표시합니다. 앱 바는 이렇게 간단한 형태로도 유용한 정보를 사용자에게 제공하고 일관된 디자인과 분위기를 Android 앱에 제공하도록 지원합니다.

그림 1. 앱 제목과 더보기 메뉴가 있는 앱 바

Android 3.0(API 수준 11)부터는 기본 테마를 사용하는 모든 활동에 ActionBar가 앱 바로 제공됩니다. 하지만 앱 바 기능은 다양한 Android 출시를 통해 점차적으로 네이티브 ActionBar에 추가되어 왔습니다. 따라서 기기가 어떤 버전의 Android 시스템을 사용하는지에 따라 네이티브 ActionBar가 다르게 동작합니다. 이에 비해, 가장 최근의 기능들은 Toolbar의 지원 라이브러리 버전에 추가되고 있어서 이 지원 라이브러리를 사용할 수 있는 모든 기기에서 이들 기능을 사용할 수 있습니다.

그러므로 지원 라이브러리의 Toolbar 클래스를 사용하여 활동의 앱 바를 구현해야 합니다. 지원 라이브러리의 툴바를 사용하면 앱이 수많은 종류의 기기에서 일관되게 작동하도록 할 수 있습니다. 예를 들어 Toolbar 위젯은 Android 2.1(API 수준 7) 이상이 실행되는 기기에서 머티리얼 디자인 환경을 제공하지만, 네이티브 작업 모음은 Android 5.0(API 수준 21) 이상이 실행되는 기기에서만 머티리얼 디자인을 지원합니다.

활동에 툴바 추가하기

다음 단계에서는 Toolbar를 활동의 앱 바로 설정하는 방법을 설명합니다.
  1. v7 appcompat 지원 라이브러리를 프로젝트에 추가합니다(지원 라이브러리 설정의 설명 참조).
  2. 활동이 AppCompatActivity를 확장하는지 확인합니다.

    Kotlin

        class MyActivity : AppCompatActivity() {
          // ...
        }
        

    자바

        public class MyActivity extends AppCompatActivity {
          // ...
        }
        

    참고: Toolbar를 앱 바로 사용하는 앱의 모든 활동과 관련하여 이렇게 변경합니다.

  3. 앱 매니페스트에서 appcompat의 NoActionBar 테마 중 하나를 사용하도록 <application> 요소를 설정합니다. 이러한 테마 중 하나를 사용하면 앱이 네이티브 ActionBar 클래스를 사용하여 앱 바를 제공할 수 없습니다. 예를 들면 다음과 같습니다.
        <application
            android:theme="@style/Theme.AppCompat.Light.NoActionBar"
            />
        
  4. Toolbar를 활동의 레이아웃에 추가합니다. 예를 들어 다음 레이아웃 코드는 Toolbar를 추가하고 활동 위에 플로팅 방식으로 표시되도록 합니다.
        <android.support.v7.widget.Toolbar
           android:id="@+id/my_toolbar"
           android:layout_width="match_parent"
           android:layout_height="?attr/actionBarSize"
           android:background="?attr/colorPrimary"
           android:elevation="4dp"
           android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
           app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
        

    앱 바 엘리베이션에 관한 권장 사항은 머티리얼 디자인 사양을 참조하세요.

    툴바를 앱 바로 사용하고 있으므로 툴바를 활동 레이아웃의 맨 위에 배치합니다.

  5. 활동의 onCreate() 메서드에서 활동의 setSupportActionBar() 메서드를 호출하고 활동의 툴바를 전달합니다. 이 메서드는 툴바를 활동의 앱 바로 설정합니다. 예를 들면 다음과 같습니다.

    Kotlin

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_my)
            // Note that the Toolbar defined in the layout has the id "my_toolbar"
            setSupportActionBar(findViewById(R.id.my_toolbar))
        }
        

    자바

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);
            Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
            setSupportActionBar(myToolbar);
        }
        

이제 앱에 기본 작업 모음이 있습니다. 기본적으로 작업 표시줄에는 앱의 이름과 더보기 메뉴만 있습니다. 처음에는 옵션 메뉴에 설정 항목만 있습니다. 작업 추가 및 처리에 설명된 것처럼, 작업 모음과 더보기 메뉴에 더 많은 작업을 추가할 수 있습니다.

앱 바 유틸리티 메서드 사용하기

툴바를 활동의 앱 바로 설정하면 v7 appcompat 지원 라이브러리의 ActionBar 클래스에서 제공하는 다양한 유틸리티 메서드에 액세스할 수 있습니다. 이러한 방식으로 여러 유용한 작업을 할 수 있습니다(예: 앱 바 숨기기 및 표시).

ActionBar 유틸리티 메서드를 사용하려면 활동의 getSupportActionBar() 메서드를 호출합니다. 이 메서드는 appcompat ActionBar 객체 참조를 반환합니다. 이러한 참조가 있으면 어떤 ActionBar 메서드라도 호출하여 앱 바를 조정할 수 있습니다. 예를 들어 앱 바를 숨기려면 ActionBar.hide()를 호출합니다.