검색 인터페이스 만들기

앱에 검색 기능을 추가할 준비가 되면 Android가 도와드립니다. 상단에 표시되는 검색 대화상자나 검색 위젯으로 표시할 수 있습니다. 검색 대화상자와 위젯은 모두 사용자의 검색어를 확인할 수 있습니다. 이렇게 하면 사용자가 어디에서든 검색을 시작할 수 있습니다. 검색 대화상자나 위젯을 사용할 수 있고 시스템이 시작하는 활동 검색하고 결과를 표시하기 위해 적절한 활동을 해야 합니다.

검색 대화상자 및 위젯에 사용할 수 있는 다른 기능은 다음과 같습니다.

  • 음성 검색
  • 최근 검색어 기반의 추천 검색어
  • 앱 데이터의 실제 결과와 일치하는 추천 검색어

이 문서에서는 검색 인터페이스를 제공하도록 앱을 설정하는 방법을 보여줍니다. Android 시스템의 지원을 받아 검색 대화상자나 검색 위젯입니다.

관련 리소스:

기본 사항

시작하기 전에 검색 인터페이스 구현 여부 결정 검색할 수 있습니다. 동일한 검색 결과를 제공함 약간 다른 방식으로 작동합니다.

  • 검색 대화상자는 Android 시스템입니다. 사용자가 활성화하면 검색 대화상자가 표시됩니다. 액티비티의 맨 위에 표시됩니다.

    Android 시스템은 검색 대화상자의 모든 이벤트를 제어합니다. 이 사용자가 쿼리를 제출하면 시스템은 쿼리를 전송한 활동에 검색 처리를 지정할 수 있습니다. 또한 이 대화상자에서는 추천 검색어가 표시됩니다.

  • 검색 위젯은 가능한 SearchView 배치할 수 있습니다. 기본적으로 검색 위젯은 표준 EditText 아무것도 하지 않지만 Android가 시스템이 모든 입력 이벤트를 처리하고 적절한 검색과 마찬가지로 추천 검색어를 제공합니다. 대화상자
를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">

사용자가 검색 대화상자 또는 검색 위젯에서 검색을 실행하면 시스템에서 Intent 및 사용자 쿼리를 저장합니다 그러면 시스템이 사용자가 원하는 활동을 검색('검색 가능한 활동')을 처리하도록 선언하고 이를 전송 있습니다. 이러한 유형의 지원 검색이 가능하도록 앱을 설정하려면 있습니다.

  • 검색 구성
    검색 대화상자 또는 위젯의 일부 설정을 구성하는 XML 파일입니다. 여기에는 음성 검색, 추천 검색어, 검색창에 힌트 텍스트를 입력할 수도 있습니다.
  • 검색 가능 활동
    Activity 검색어를 받아 데이터를 검색하며 검색어를 표시하는 확인할 수 있습니다.
  • 검색 인터페이스: 다음 중 하나로 제공됩니다.
    • 검색 대화상자
      검색 대화상자는 기본적으로 숨겨져 있습니다. 이 아이콘은 통화 시 화면 onSearchRequested() 사용자가 검색 버튼을 탭할 때.
    • SearchView 위젯
      검색 위젯을 사용하면 내 어디에나 검색창을 배치할 수 있습니다. 활동(앱 바의 작업 뷰 포함)

이 문서의 나머지 부분에서는 검색 구성을 만드는 방법을 설명합니다. 검색 가능 활동과 검색 대화상자 또는 검색 위젯입니다.

검색 가능한 구성 만들기

가장 먼저 필요한 것은 검색 구성을 선택합니다. 검색 대화상자 또는 위젯의 특정 UI 측면을 구성하고 스마트 자동 완성 기능을 사용할 수 있습니다. 이 파일은 일반적으로 이름이 searchable.xml이고 res/xml/에 저장되어야 합니다. 프로젝트 디렉터리에 있습니다

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

검색 구성 파일에는 <searchable> 드림 요소를 루트 노드로 설정하고 다음 예를 참고하세요.

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint" >
</searchable>

android:label 속성은 유일한 필수 속성으로서 그것은 문자열 리소스(앱 이름이어야 함)를 가리킵니다. 이 라벨은 다음 페이지에서 빠른 검색창에 추천 검색어를 사용하도록 설정할 때까지 사용자에게 표시됩니다. 시스템의 검색 가능한 항목 목록에 라벨이 표시되는 지점입니다. 설정을 변경할 수 있습니다.

필수는 아니지만 항상 검색에서 힌트 문자열을 제공하는 android:hint 속성 체크박스를 선택합니다. 힌트가 중요한 이유는 사용자가 검색할 수 있는 내용에 관한 중요한 단서가 될 수 있습니다.

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

<searchable> 요소는 다른 여러 속성을 허용합니다. 하지만 다음과 같은 특성을 추가할 때까지는 대부분의 속성이 필요하지 않습니다. 추천 검색어음성 검색 다음에 대한 자세한 내용은 검색 구성 파일에 대한 자세한 내용은 검색 구성 참조 문서입니다.

검색 가능 활동 만들기

검색 가능 활동은 앱에서 다음을 수행하는 Activity입니다. 검색 결과를 표시합니다.

사용자가 검색 대화상자 또는 위젯에서 검색을 실행하면 시스템은 사용자가 검색 가능 활동을 시작하고 Intent ACTION_SEARCH 있습니다. 검색 가능 활동은 인텐트의 QUERY 데이터를 검색하여 결과를 제시합니다.

Google Cloud 콘솔의 다른 활동에 시스템에서 어떤 활동이 검색 가능한 활동인지 알아야 하므로 검색어를 제대로 전달할 수 있습니다. 따라서 먼저 Activity에 포함해야 합니다.

검색 가능 활동 선언

아직 없다면 다음을 실행하는 Activity를 만듭니다. 결과를 제공합니다. 검색을 구현할 필요가 없습니다. 에 선언할 수 있는 활동을 만들기만 하면 됩니다. 이 활동은 합니다. 매니페스트의 <activity> 드림 요소에서 다음 단계를 따르세요.

  1. ACTION_SEARCH 인텐트를 허용하는 활동을 <intent-filter> 요소가 포함됩니다.
  2. 다음에서 사용할 검색 구성 지정 <meta-data> 요소가 포함됩니다.

예를 들면 다음과 같습니다.

<application ... >
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>
    ...
</application>

<meta-data> 요소는 android:name 속성 값이 "android.app.searchable"android:resource 검색 가능한 구성 파일에 대한 참조로 바꿉니다. res/xml/searchable.xml는 파일에서 참조됩니다.

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

검색 실행

매니페스트에서 검색 가능 활동을 선언한 후 다음 단계에 따라 검색 가능 활동에서 검색을 실행하세요.

  1. 쿼리를 받습니다.
  2. 내 데이터를 검색합니다.
  3. 결과를 제시합니다.

쿼리 수신

사용자가 검색 대화상자 또는 위젯에서 검색을 실행하면 시스템은 검색 가능 활동을 시작하고 ACTION_SEARCH를 전송합니다. 인텐트를 지정할 수 있습니다. 이 인텐트는 QUERY 문자열에 검색어를 전달합니다. 추가. 활동이 시작될 때 이 인텐트를 확인하고 문자열을 추출합니다. 예를 들어, 검색 가능할 때 검색어를 얻는 방법은 다음과 같습니다. 시작:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.search)

    // Verify the action and get the query.
    if (Intent.ACTION_SEARCH == intent.action) {
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doMySearch(query)
        }
    }
}

자바

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    // Get the intent, verify the action, and get the query.
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

QUERY 문자열은 항상 ACTION_SEARCH 인텐트에 대한 응답 메시지입니다. 앞의 예에서 쿼리는 가져온 후 로컬 doMySearch() 메서드로 전달되며, 여기서 실제 검색 작업이 수행됩니다.

데이터 검색

데이터를 저장하고 검색하는 프로세스는 앱마다 다릅니다. 다음과 같은 작업을 할 수 있습니다. 데이터를 저장하고 검색하는 방법을 보여주며 이 문서에서는 방법을 보여주지 않습니다. 요구사항 및 데이터의 측면에서 데이터를 저장하고 검색하는 방법을 고려합니다. 형식으로 입력합니다. 다음은 도움이 될 수 있는 팁입니다.

  • 데이터가 기기의 SQLite 데이터베이스에 저장되는 경우 다음을 수행합니다. 전체 텍스트 검색(LIKE 대신 FTS3 사용) 텍스트 데이터에서 보다 강력한 검색 기능을 제공할 수 있고 훨씬 더 빠르게 결과를 얻을 수 있습니다. 자세한 내용은 sqlite.org: FTS3 및 <ph type="x-smartling-placeholder">SQLiteDatabase</ph> 클래스를 참조하세요.
  • 데이터가 온라인에 저장되면 인지된 검색 성능이 사용자의 데이터 연결에 의해 방해되지 않아야 합니다. 예를 들어 검색 진행률 표시기가 표시됩니다. 자세한 내용은 android.net 네트워크 API와 ProgressBar 를 참조하세요.
를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">

결과 발표하기

데이터의 위치 및 검색 방법에 관계없이 검색 결과에 대한 검색 결과를 Adapter 이 모든 검색결과를 하나의 형식으로 RecyclerView 데이터의 출처가 SQLite 데이터베이스 쿼리인 경우 다음을 사용하여 RecyclerView CursorAdapter입니다. 데이터가 다른 형식으로 제공되는 경우 BaseAdapter

Adapter는 데이터 세트의 각 항목을 View 객체. 날짜 Adapter는 각 조각에 적용되는 RecyclerView에 적용됩니다. 목록에 개별 보기로 삽입됩니다. Adapter: 인터페이스일 뿐이므로 CursorAdapter: Cursor—다음과 같음 확인할 수 있습니다 기존 구현이 데이터에 적합하지 않은 경우 BaseAdapter에서 직접 구현하세요.

검색 대화상자 사용

검색 대화상자는 화면 상단에 플로팅 검색창을 제공합니다. 앱 아이콘을 클릭합니다 검색 대화상자에서 추천 검색어를 제시할 수 있습니다. 자동으로 생성됩니다. 사용자가 검색을 실행하면 시스템에서 검색어를 전송합니다. 검색할 수 있습니다.

기본적으로 검색 대화상자는 사용자가 활성화할 때까지 항상 숨겨져 있습니다. 앱에서 다음을 호출하여 검색 대화상자를 활성화할 수 있습니다. onSearchRequested() 하지만 이 방법은 액티비티의 검색 대화상자를 활성화합니다.

검색 대화상자가 검색을 수행할 수 있게 하려면 시스템에 검색 가능 활동은 검색 대화상자의 검색어를 수신해야 합니다. 대상 예를 들어 이전 섹션에서 검색 가능 활동 만들기, 즉 검색 가능한 활동 만들기 SearchableActivity라는 활동이 생성됩니다. 당신이 원하는 경우 OtherActivity라는 이름과 같은 별도의 활동을 통해 검색 대화상자를 생성하고 SearchableActivity에 검색 결과를 전달하고 SearchableActivity가 검색 가능 활동임 OtherActivity의 검색 대화상자에 사용합니다.

활동의 검색 대화상자에 대해 검색 가능 활동을 선언하려면 각 활동의 내부에 있는 <meta-data> 요소 <activity> 요소 <meta-data> 요소는 반드시 android:value 속성을 포함해야 검색 가능 활동의 클래스 이름 및 android:name 속성 값을 "android.app.default_searchable"로 바꿉니다.

예를 들어 다음은 검색 가능 활동과 SearchableActivity 외 활동 OtherActivity: SearchableActivity를 사용하여 다음을 수행합니다. 검색 대화상자에서 실행된 검색을 수행합니다.

<application ... >
    <!-- This is the searchable activity; it performs searches. -->
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>

    <!-- This activity enables the search dialog to initiate searches
         in the SearchableActivity. -->
    <activity android:name=".OtherActivity" ... >
        <!-- Enable the search dialog to send searches to SearchableActivity. -->
        <meta-data android:name="android.app.default_searchable"
                   android:value=".SearchableActivity" />
    </activity>
    ...
</application>

이제 OtherActivity에는 검색 가능한 활동을 선언하는 <meta-data> 요소 를 사용하면 활동이 검색 대화상자를 활성화합니다. 사용자가 이 활동에서 onSearchRequested() 메서드는 검색 대화상자 사용자가 검색을 실행하면 시스템이 시작됩니다. SearchableActivity ACTION_SEARCH(으)로 배송 인텐트를 지정할 수 있습니다.

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

앱의 모든 활동이 검색 대화상자를 제공하도록 하려면 이전 <meta-data> 요소를 <application> 요소(각 <activity> 대신)를 사용합니다. 이렇게 하면 는 값을 상속하고, 검색 대화상자를 제공하며, 확인할 수 있습니다 검색 가능한 활동이 여러 개인 경우 기본 검색 활동을 재정의하려면 다른 <meta-data> 선언을 지원합니다.

이제 활동에 대해 검색 대화상자가 활성화되었으므로 앱에서 검색 수행

검색 대화상자 호출

일부 장치는 전용 검색 버튼을 제공하지만 버튼은 기기마다 다를 수 있으며 많은 기기에서 검색 기능을 제공하지 않습니다. 버튼이 전혀 표시되지 않습니다. 따라서 검색 대화상자를 사용할 때는 를 호출하여 검색 대화상자를 활성화하도록 UI에 표시할 수 있습니다. onSearchRequested()

예를 들어 옵션 메뉴 또는 UI 레이아웃 이 함수는 onSearchRequested()를 호출합니다.

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

'입력하여 검색'을 사용 설정할 수도 있습니다. 기능을 사용하면 검색 대화상자가 표시됩니다. 키 입력은 검색 대화상자에 삽입됩니다. 활동에서 '입력하여 검색' 기능을 사용 설정할 수 있습니다. (으)로 setDefaultKeyMode 또는 DEFAULT_KEYS_SEARCH_LOCAL: 내 활동의 <ph type="x-smartling-placeholder">onCreate()</ph> 메서드를 사용하여 축소하도록 요청합니다.

검색 대화상자가 활동 수명 주기에 미치는 영향

검색 대화상자는 플로팅 Dialog 을 터치합니다. 액티비티 스택에 어떠한 변화도 일으키지 않으므로 검색 대화상자가 표시될 때 다음과 같은 수명 주기 메서드가 없습니다. onPause()—다음과 같음 합니다. 입력 포커스가 검색 대화상자

검색 대화상자가 활성화되었을 때 알림을 받으려면 onSearchRequested() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다. 시스템이 이 메서드를 호출할 때 는 활동이 검색 대화상자에 대한 입력 포커스를 상실한다는 것을 나타냅니다. 따라서 게임 일시중지와 같이 이벤트에 적합한 작업을 할 수 있습니다. 예외적인 경우 검색 컨텍스트를 전달하고 있습니다. 데이터의 정의에 관해서는 이 문서의 다른 섹션에서 설명하는 슈퍼클래스 구현을 호출하여 이 메서드를 호출합니다.

Kotlin

override fun onSearchRequested(): Boolean {
    pauseSomeStuff()
    return super.onSearchRequested()
}

자바

@Override
public boolean onSearchRequested() {
    pauseSomeStuff();
    return super.onSearchRequested();
}

사용자가 뒤로 버튼을 탭하여 검색을 취소하면 검색 대화상자 가 닫히고 활동이 입력 포커스를 다시 얻습니다. 알림을 받도록 등록할 수 있습니다. 검색 대화상자가 닫힐 때 setOnDismissListener(), setOnCancelListener(), 또는 둘 다일 수 있습니다. 다음 단계에 따라 OnDismissListener, 검색 대화상자가 닫힐 때마다 호출되기 때문입니다. 이 OnCancelListener 사용자가 명시적으로 검색 대화상자를 종료하는 이벤트에만 해당하므로 검색이 실행될 때 호출되지 않습니다. 검색이 실행되면 검색 대화상자가 자동으로 사라집니다.

현재 활동이 검색 활동이 아닌 경우 정상 활동 수명 주기 이벤트는 사용자가 검색: 현재 활동이 설명된 대로 onPause()를 수신합니다. in 소개 활동을 참조하세요. 하지만 현재 활동이 검색 가능 활동인 경우 다음 두 가지 상황 중 하나가 발생합니다.

  • 기본적으로 검색 가능 활동은 onCreate() 호출이 포함된 ACTION_SEARCH 인텐트 활동의 새 인스턴스가 활동의 맨 위로 가져옴 있습니다 현재 검색 가능 활동에는 이전 버튼을 누르면 이전 작업으로 돌아가고 검색 가능한 활동 인스턴스를 종료하는 것이 아니라 있습니다.
  • android:launchMode"singleTop"로 설정하면 검색 가능 활동이 ACTION_SEARCH 인텐트를 수신합니다. 다음으로 onNewIntent(Intent), 새 ACTION_SEARCH 인텐트를 전달합니다. 예를 들어 검색 가능 활동의 실행 모드가 시작되어 "singleTop"입니다.

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.search)
        handleIntent(intent)
    }
    
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        handleIntent(intent)
    }
    
    private fun handleIntent(intent: Intent) {
        if (Intent.ACTION_SEARCH == intent.action) {
            intent.getStringExtra(SearchManager.QUERY)?.also { query ->
                doMySearch(query)
            }
        }
    }
    

    자바

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        handleIntent(getIntent());
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        handleIntent(intent);
    }
    
    private void handleIntent(Intent intent) {
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
          String query = intent.getStringExtra(SearchManager.QUERY);
          doMySearch(query);
        }
    }
    

    다음 섹션의 예시 코드와 비교하면 검색을 수행하면 검색 인텐트가 이제 handleIntent() 메서드에 있으므로 둘 다 onCreate()onNewIntent()가 실행할 수 있습니다.

    시스템이 onNewIntent(Intent)를 호출할 때 활동은 실행되지 않습니다. 다시 시작했기 때문에 getIntent() 메서드는 onCreate()로 수신된 것과 동일한 인텐트를 반환합니다. 이것이 바로 setIntent(Intent) onNewIntent(Intent) 내에서: 인텐트가 향후 getIntent()를 호출할 경우 활동이 업데이트됩니다.

"singleTop" 실행 모드를 사용하는 두 번째 시나리오는 일반적으로 검색이 완료된 후에 사용자가 추가 검색을 할 수 있기 때문에 앱이 검색 결과에서 여러 개의 인스턴스가 만들어지는 것을 검색 가능 활동 검색 가능 활동을 다음과 같이 설정하는 것이 좋습니다. "singleTop" 실행 모드를 시작하세요. 다음 예를 참고하세요.

<activity android:name=".SearchableActivity"
          android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
          android:name="android.app.searchable"
          android:resource="@xml/searchable"/>
  </activity>

검색 문맥 데이터 전달

경우에 따라 모든 검색에 대한 검색 가능 활동 그러나 사용자의 검색 활동을 바탕으로 검색 조건을 정합니다. 시스템이 전송하는 인텐트에 추가 데이터를 제공할 수 있습니다. 확인할 수 있습니다. 추가 데이터를 전달할 수 있습니다. APP_DATA Bundle: ACTION_SEARCH 인텐트에 포함됩니다.

이러한 종류의 데이터를 검색 가능 활동에 전달하려면 사용자가 작업을 실행할 수 있는 활동의 onSearchRequested() 메서드 검색을 실행하고 추가 데이터로 Bundle를 만듭니다. 통화 <ph type="x-smartling-placeholder">startSearch()</ph> 검색 대화상자를 활성화합니다. 예를 들면 다음과 같습니다.

Kotlin

override fun onSearchRequested(): Boolean {
    val appData = Bundle().apply {
        putBoolean(JARGON, true)
    }
    startSearch(null, false, appData, false)
    return true
}

자바

@Override
public boolean onSearchRequested() {
     Bundle appData = new Bundle();
     appData.putBoolean(SearchableActivity.JARGON, true);
     startSearch(null, false, appData, false);
     return true;
 }

true가 반환되면 이 콜백 이벤트를 성공적으로 처리했음을 나타내며 startSearch()를 호출하여 검색 대화상자를 활성화합니다. 사용자가 쿼리를 제출하면 해당 검색어가 데이터와 함께 검색 활동에 전달됩니다. 추가할 수 있습니다. APP_DATA에서 추가 데이터를 추출할 수 있습니다. 다음 예와 같이 Bundle를 사용하여 상세검색을 수행합니다.

Kotlin

val jargon: Boolean = intent.getBundleExtra(SearchManager.APP_DATA)?.getBoolean(JARGON) ?: false

자바

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
    boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
}
<ph type="x-smartling-placeholder">

검색 위젯 사용

앱 상단 바의 검색 뷰를 보여주는 이미지

그림 1. SearchView 위젯 작업 뷰를 만들 수 있습니다

검색 위젯은 검색 대화상자와 동일한 기능을 제공합니다. 그것은 사용자가 검색을 실행할 때 적절한 활동을 시작하고 추천 검색어 제공 및 음성 검색 수행 이 옵션을 사용할 수 없는 경우 앱 바에 검색 위젯을 넣으려면 검색 위젯을 사용하는 대신 위젯을 생성할 수 있습니다.

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

검색 위젯 구성

kubectl 명령어 검색 구성검색 가능한 활동, 지원 검색 사용 설정 다음을 호출하여 각 SearchView에 대해 setSearchableInfo() 객체를 나타내는 SearchableInfo 객체를 구성할 수 있습니다

다음을 호출하여 SearchableInfo 참조를 가져올 수 있습니다. getSearchableInfo()SearchManager입니다.

예를 들어 SearchView를 앱바가 표시되는 동안 onCreateOptionsMenu() 콜백을 호출합니다.

Kotlin

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the options menu from XML.
    val inflater = menuInflater
    inflater.inflate(R.menu.options_menu, menu)

    // Get the SearchView and set the searchable configuration.
    val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
    (menu.findItem(R.id.menu_search).actionView as SearchView).apply {
        // Assumes current activity is the searchable activity.
        setSearchableInfo(searchManager.getSearchableInfo(componentName))
        setIconifiedByDefault(false) // Don't iconify the widget. Expand it by default.
    }

    return true
}

자바

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the options menu from XML.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Get the SearchView and set the searchable configuration.
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    // Assumes current activity is the searchable activity.
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false); // Don't iconify the widget. Expand it by default.

    return true;
}

이제 검색 위젯이 구성되었으며 시스템에서 검색어를 전달합니다. 검색 활동에 추가할 수 있습니다. 또한 추천 검색어를 보여줍니다.

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

앱 바의 작업 뷰에 관한 자세한 내용은 다음을 참고하세요. 작업 보기 및 작업 사용 제공업체의 서비스 제공업체일 수 있습니다.

기타 검색 위젯 기능

SearchView 위젯은 개발자가 :

제출 버튼
기본적으로 검색어를 제출하는 버튼이 없으므로 키보드에서 Return 키를 눌러 검색을 시작합니다. 나 '제출'을 추가할 수 있습니다. 버튼을 setSubmitButtonEnabled(true)
추천 검색어의 쿼리 조정
추천 검색어를 사용하면 일반적으로 사용자가 더 정확한 검색어를 추천받을 수 있습니다. 각 추천 옆에 추천을 삽입하는 버튼을 추가할 수 있습니다. 를 검색하여 사용자가 상세검색을 수행할 수 있도록 합니다. setQueryRefinementEnabled(true)
검색창 표시 여부 전환 기능
검색 위젯은 기본적으로 '아이콘화'되어 있습니다. 다시 말해 검색 아이콘(돋보기)으로만 표현됩니다. 이는 다음으로 확장됩니다. 사용자가 아이콘을 탭하면 검색창이 표시됨 앞서 설명했듯이 예를 들어 setIconifiedByDefault(false) 다음을 호출하여 검색 위젯 모양을 전환할 수도 있습니다. setIconified()

SearchView 클래스에는 검색 위젯을 맞춤설정할 수 있습니다. 하지만 대부분의 API는 모든 사용자 입력을 직접 처리합니다. 검색어 및 추천 검색어 표시

위젯과 대화상자 모두 사용하기

앱 바에 검색 위젯을 작업 보기를 클릭하고 사용 설정 여유 공간이 있으면 앱 바에 표시되도록 하려면 android:showAsAction="ifRoom": 검색 위젯이 작업 뷰로 표시되지 않습니다. 대신 메뉴 항목이 선택합니다. 예를 들어 앱이 작은 화면에서 실행되는 경우 앱 바에 다른 작업과 함께 검색 위젯을 표시할 충분한 공간이 있어야 합니다. 항목 또는 탐색 요소를 추가할 수 있으므로 메뉴 항목이 대신 선택합니다. 더보기 메뉴에 배치하면 항목이 일반 메뉴처럼 작동합니다. 작업 뷰(즉, 검색 위젯)를 표시하지 않습니다.

이 상황을 처리하기 위해 검색 위젯을 연결하는 메뉴 항목은 는 사용자가 더보기 메뉴에서 검색 대화상자를 선택할 때 활성화해야 합니다. 이렇게 하려면 onOptionsItemSelected() 'Search'라는 메뉴 항목을 열고 onSearchRequested()입니다.

앱 바의 항목이 작동하는 방식과 자세한 내용은 앱 바를 추가합니다.

음성 검색 추가

다음을 수행하여 검색 대화상자나 위젯에 음성 검색 기능을 추가할 수 있습니다. android:voiceSearchMode 속성을 검색 가능한 구성할 수 있습니다 그러면 음성 프롬프트를 실행하는 음성 검색 버튼이 추가됩니다. 사용자가 말하기를 마치면 스크립트가 작성된 검색어가 검색 가능 활동

예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</searchable>

음성을 사용 설정하려면 showVoiceSearchButton 값이 필요합니다. 검색 두 번째 값 launchRecognizer는 음성 검색 버튼을 누르면 시작되어야 할 인식기가 텍스트를 검색 활동에 추가합니다.

음성 검색 동작을 지정하기 위해 추가 속성을 제공할 수 있습니다. 지정할 수 있습니다. 자세한 내용은 검색 구성 참고 자료 사용 가능한 속성에 대한 정보입니다.

<ph type="x-smartling-placeholder">를 통해 개인정보처리방침을 정의할 수 있습니다.

추천 검색어 추가

검색 대화상자와 검색 위젯 모두 추천 검색어를 제공할 수 있습니다. Android 시스템의 도움을 받아 자동으로 실행되도록 할 수 있습니다. 시스템에서 추천 목록을 가져오고 사용자가 추천 항목을 선택하면 이벤트를 처리합니다. 추천되지 않습니다.

두 가지 추천 검색어를 제공할 수 있습니다.

최근 검색어 추천
추천 단어는 사용자가 이전에 검색에 사용한 단어입니다. 쿼리합니다. 추가 맞춤 추천 검색어를 참고하세요.
맞춤 추천 검색어
내 데이터 소스에서 제공하는 추천 검색어입니다. 사용자가 검색 중인 올바른 맞춤법 또는 항목을 즉시 선택하도록 지원 정의합니다. 맞춤 검색 추가를 참조하세요. 권장사항을 참고하세요.