작업 뷰 및 작업 제공자 사용

<ph type="x-smartling-placeholder">

AndroidX 라이브러리의 Toolbar 제공 사용자가 앱과 상호작용할 수 있는 다양한 방법을 제공합니다. 작업 추가 및 처리에서는 버튼이나 메뉴 항목일 수 있는 작업을 정의합니다. 이 문서에서는 두 가지 다목적 구성요소:

  • 작업 뷰는 앱 바 내에 풍부한 기능을 제공하는 작업입니다. 대상 예를 들어 검색 작업 뷰를 사용하면 사용자가 활동이나 프래그먼트를 변경할 수 있습니다.
  • 작업 제공자: 고유한 맞춤 레이아웃이 사용된 작업입니다. 처음에 수행한 작업은 버튼 또는 메뉴 항목으로 표시됩니다. 사용자가 작업을 탭하면 작업 제공자가 작업의 동작을 정의하는 방법입니다. 예를 들어 작업 제공자는 메뉴를 표시합니다.

AndroidX는 여러 가지 특수한 작업 뷰와 작업 제공자 위젯을 제공합니다. 예를 들어 SearchView 위젯 검색어 입력을 위한 작업 뷰를 구현합니다. 이 ShareActionProvider 위젯은 다른 앱과 정보를 공유하기 위한 작업 제공자를 구현합니다. 또한 kubectl 명령어 작업 뷰와 작업 제공자를 지정할 수 있습니다.

작업 뷰 추가

작업 뷰를 추가하려면 <item> 드림 요소를 추가합니다. 작업 추가 및 처리. 다음 속성 중 하나를 <item> 요소:

  • actionViewClass: 작업을 구현하는 위젯의 클래스입니다.
  • actionLayout: 작업의 구성요소를 설명하는 레이아웃 리소스

showAsAction 속성을 "ifRoom|collapseActionView"로 설정하거나 "never|collapseActionView"입니다. collapseActionView 플래그는 사용자가 위젯과 상호작용하지 않을 때 위젯을 표시합니다. 위젯이 앱 바에 있는 경우 앱 위젯을 아이콘으로 표시합니다. 위젯이 더보기 메뉴에 있는 경우 앱이 위젯을 표시합니다. 표시됩니다. 사용자가 작업 뷰와 상호작용하면 뷰가 확장되어 앱 바를 채웁니다.

예를 들어 다음 코드는 SearchView 위젯을 앱 바에 추가합니다.

<item android:id="@+id/action_search"
     android:title="@string/action_search"
     android:icon="@drawable/ic_search"
     app:showAsAction="ifRoom|collapseActionView"
     app:actionViewClass="androidx.appcompat.widget.SearchView" />

사용자가 위젯과 상호작용하지 않는 경우 앱은 지정된 아이콘으로 위젯을 표시합니다. 아티스트: android:icon 앱 바에 공간이 없으면 앱은 작업을 더보기 메뉴

선행 및 후행 아이콘이 있는 검색창을 보여주는 이미지입니다.
그림 1. 선행 및 후행 아이콘이 있는 검색창

사용자가 아이콘이나 메뉴 항목을 탭하면 위젯이 확장되어 툴바를 채우고 상호작용할 수 있습니다.

검색창에 포커스가 있으면 열리는 검색 뷰를 보여주는 이미지입니다.
그림 2. 검색창에 포커스가 있으면 검색 뷰가 열립니다.

작업을 구성해야 하는 경우 Activity의 onCreateOptionsMenu() 있습니다. 다음을 호출하여 작업 뷰의 객체 참조를 가져올 수 있습니다. getActionView() 메서드를 사용하여 축소하도록 요청합니다. 예를 들어 다음 코드는 SearchView의 객체 참조를 가져옵니다. 위젯을 사용할 수 있습니다.

Kotlin

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.main_activity_actions, menu)

    val searchItem = menu?.findItem(R.id.action_search)
    val searchView = searchItem?.actionView as SearchView

    // Configure the search info and add any event listeners.

    return super.onCreateOptionsMenu(menu)
}

자바

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_activity_actions, menu);

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView =
            (SearchView) searchItem.getActionView();

    // Configure the search info and add any event listeners.

    return super.onCreateOptionsMenu(menu);
}
<ph type="x-smartling-placeholder">

작업 뷰 확장에 응답

작업의 <item> 요소에 collapseActionView 플래그가 있으면 앱은 사용자가 작업 뷰와 상호작용할 때까지 작업 뷰를 아이콘으로 표시합니다. 사용자가 기본 제공되는 핸들러인 아이콘을 탭합니다. onOptionsItemSelected() 작업 뷰를 확장합니다. 활동 서브클래스가 onOptionsItemSelected() 메서드의 경우 재정의 메서드가 다음을 호출해야 합니다. super.onOptionsItemSelected(): 슈퍼클래스가 작업 뷰를 확장할 수 있습니다.

작업이 확장되거나 축소될 때 무언가를 하려는 경우 implements MenuItem.OnActionExpandListener, 해당 클래스의 멤버를 setOnActionExpandListener()입니다. 예를 들어 작업 뷰가 확장되었는지 또는 시작되었는지에 따라 활동을 업데이트하려는 접혀 있습니다. 다음 코드 스니펫은 리스너를 정의하고 전달하는 방법을 보여줍니다.

Kotlin

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.options, menu)

    // Define the listener.
    val expandListener = object : MenuItem.OnActionExpandListener {
        override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
            // Do something when the action item collapses.
            return true // Return true to collapse the action view.
        }

        override fun onMenuItemActionExpand(item: MenuItem): Boolean {
            // Do something when it expands.
            return true // Return true to expand the action view.
        }
    }

    // Get the MenuItem for the action item.
    val actionMenuItem = menu?.findItem(R.id.myActionItem)

    // Assign the listener to that action item.
    actionMenuItem?.setOnActionExpandListener(expandListener)

    // For anything else you have to do when creating the options menu,
    // do the following:

    return true
}

자바

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.options, menu);

    // Define the listener.
    OnActionExpandListener expandListener = new OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do something when the action item collapses.
            return true;  // Return true to collapse action view.
        }

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Do something when it expands.
            return true;  // Return true to expand the action view.
        }
    };

    // Get the MenuItem for the action item.
    MenuItem actionMenuItem = menu.findItem(R.id.myActionItem);

    // Assign the listener to that action item.
    MenuItemCompat.setOnActionExpandListener(actionMenuItem, expandListener);

    // For anything else you have to do when creating the options menu,
    // do the following:

    return true;
}

작업 제공자 추가

작업 제공자를 선언하려면 툴바 메뉴에서 <item> 요소를 만듭니다. 작업 추가 및 처리에 설명된 대로 리소스에 액세스할 수 있습니다. actionProviderClass 속성을 설정하고, 이 속성을 할 수 있습니다.

예를 들어 다음 코드는 위젯인 ShareActionProvider를 선언합니다. AndroidX 라이브러리에 정의되어 있습니다. 이 API를 사용하면 앱이 다른 앱과 데이터를 공유할 수 있습니다.

<item android:id="@+id/action_share"
    android:title="@string/share"
    app:showAsAction="ifRoom"
    app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"/>

이 경우 위젯의 아이콘을 선언할 필요가 없습니다. ShareActionProvider는 자체 그래픽을 제공합니다. 맞춤 작업을 사용하는 경우 아이콘을 선언할 수 있습니다.

추가 리소스

  • 자세한 내용은 ShareActionProvider 를 참조하세요.
  • 자세한 내용은 ActionProvider: 맞춤 작업 제공자 만들기에 관해 자세히 알아보세요.