【Android/Kotlin】SearchView(검색바)와 조금 사이 좋게 되어 입력 문자열을 취득할 수 있게 되었다

개요



Android 앱에서 목록 내 검색 기능을 구현하고 싶었지만 검색 바와는 면식이 없었다.
그래서 검색바와 조금 놀아 기본적인 사용법을 알았다. 설치 방법이나, 입력한 캐릭터 라인을 취득할 때에 사용할 수 있는 것 같은 메소드를 비망록적으로 정리한다.


화면에 검색바 설치


xmlSearchView 를 기술하면 검색 UI를 설치할 수 있다.
<SearchView
    android:id="@+id/search"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:iconifiedByDefault="false"
    android:queryHint="検索" />
iconifiedByDefaultfalse 로 하여 항상 검색 입력란이 표시되어 있는 상태로 한다. 디폴트는 true 로, true 의 경우 평시는 아이콘만 표시되어 아이콘을 클릭하면 검색 바가 나온다. 예를 들어 앱바에 설치하는 경우 등은 true 로 하면 좋을 것이다.
iconifiedByDefault: false
iconifiedByDefault: true

또한, queryHint 에 힌트 캐릭터 라인을 설정해 두면, 미입력 상태의 검색 바에 힌트가 표시된다.

입력된 문자열 검색



setOnQueryTextListener()



「입력란의 문자열이 바뀌었을 때」와 「검색 버튼을 눌렀을 때」의 이벤트 리스너를 세트한다.

SearchView.OnQueryTextListener


  • onQueryTextChange(newText: String): Boolean사용자가 문자열을 변경할 때 호출됩니다(단일 문자 또는 예측 변환 단위 단위).newText 는 그 때 입력되고 있는 캐릭터 라인.
  • onQueryTextSubmit(query: String): Boolean사용자가 쿼리를 보낼 때 (검색 버튼을 클릭) 호출됩니다.query 는 전송된 문자열입니다.

  • 예를 들어, 검색 결과를 실시간으로 표시하고 싶은 경우는 onQueryTextChange() 에 검색 버튼을 누를 때에 검색 결과를 표시한다(이쪽은 거의 100% 한다고 생각하지만) 좋아.
    searchBar.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextChange(newText: String): Boolean {
            // text changed
            return false
        }
        override fun onQueryTextSubmit(query: String): Boolean {
            // submit button pressed
            return false
        }
    })
    

    검색 버튼



    문자열을 확정시켰을 때는 Return 버튼이 검색 버튼이 된다.


    또한, onQueryTextSubmit()에서 검색 바의 입력란의 가장자리에 검색 버튼을 표시할지 여부 (진위 값)를 설정할 수 있으며, setSubmitButtonEnabled()에서 검색 버튼이 표시됩니다.


    true



    「검색바의 포커스가 바뀌었을 때」의 이벤트 청취자를 세트 한다.

    setOnQueryTextFocusChangeListener()


  • View.OnFocusChangeListener뷰의 포커스 상태가 바뀌었을 때에 불린다.

  • 예를 들면, 검색 바에 포커스가 닿을 때만 검색 취소 버튼을 표시하고, 검색 바 이외에 포커스가 이동했을 때 입력란을 리셋하는 등의 사용법이 가능하다.

    onFocusChange(v: View, hasFocus: Boolean)



    현재 입력되고 있는 캐릭터 라인을 취득한다.
    예를 들어, 독자적으로 설치된 버튼을 누를 때 입력 된 문자열을 얻는 방법을 사용할 수 있습니다.

    요약


  • xml에 getQuery() 를 기술하면 검색바를 설치할 수 있다. 이 때, 바 표시로 하기 위해서 SearchViewiconifiedByDefault 로 한다.
  • falsesetOnQueryTextListener()
  • OnQueryTextListenersetOnQueryTextFocusChangeListener()
  • 좋은 웹페이지 즐겨찾기