‘SearchView’라는 ActionBar 용 위젯이 있습니다. 사용하지 않는 경우 다음과 같이 표시됩니다.
사용중인 경우 다음과 같이 표시됩니다.
나는 (물론 프로그래밍 방식으로) searchview를 열기를 원한다 ( “사용중”으로 만든다).
다음과 같은 여러 기능을 시도했습니다.
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(this);
searchView.performClick();
searchView.requestFocus();
하지만 그 어느 것도 효과가 없었습니다 …
XML의 SearchView :
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
답변
를 확장 SearchView
하여
searchView.setIconified(false);
그리고 그것을 축소
searchView.setIconified(true);
의 값을 android:showAsAction
에서 ifRoom|collapseActionView
로 변경해야 합니다 always
. SearchView
의 속성은 android:iconifiedByDefault
해야한다 true
, 기본값 인, 그렇지 않으면 사용자가 축소 할 수없는 SearchView
프로그래밍 방식으로 확장 된 후.
답변
전화 해봐 expandActionView()
ActionView에서 onActionViewExpanded ()가 아닌 MenuItem .
그것은 나를 위해 작동합니다.
MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchMenuItem.expandActionView();
답변
필요한 경우에만 지원 라이브러리를 사용하려면 다음을 수행하십시오.
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
if (Utils.hasIceCreamSandwich())
searchMenuItem.expandActionView();
else MenuItemCompat.expandActionView(searchMenuItem);
그렇지 않으면 간단히
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
MenuItemCompat.expandActionView(searchMenuItem);
답변
늦었다는 건 알지만
expandActionView ()를 호출하여 열고, collapseActionView ()를 호출하여 닫으십시오. getActionView ()를 통해 실제 Action View에서 requestFocus ()를 호출하여 검색 뷰 포커스를 제공 할 수 있습니다. 🙂
답변
Matthias Robberts의 답변 확장 :
목록 조각이 검색 값을 유지하고 사용자가 다른 조각에서 돌아온 후에 설정하기를 원했습니다.
if (myViewModel.filterTextSaved.isNotEmpty()) { // Kotlin, storing state in ViewModel
searchItem.expandActionView() // needs to come first, otherwise empty text
theTextArea.setText(courseViewModel.filterTextOnClick)
}
그리고 메뉴의 always|collapseActionView
경우 유지합니다 . 그렇지 않으면 사용자가 텍스트를 삭제할 때 열려 있습니다.
답변
결국 searchView
유지 를 열려면 close_button
이것을 사용하십시오 onCreate
:-
searchView.findViewById(R.id.search_button).performClick();