Как удалить фокус из SearchView?

Я хочу удалить фокус и текст из SearchView в onResume() Я попробовал searchView.clearFocus(); Но это не работает.

 <SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/toolbar" android:layout_alignTop="@+id/toolbar" android:layout_centerVertical="true" android:layout_marginBottom="4dp" android:layout_marginTop="4dp" android:iconifiedByDefault="false" android:paddingLeft="16dp" android:paddingRight="16dp" /> 

Это мой xml-код.

Вы можете настроить свой корневой макет с android:focusableInTouchMode атрибута android:focusableInTouchMode и запросить фокус на этом View в onResume() .

Например:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:focusableInTouchMode="true"> <SearchView android:id="@+id/search_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:iconifiedByDefault="false"/> </LinearLayout> 

И затем в вашей Activity :

 private View rootView; private SearchView searchView; // ... @Override protected void onCreate(Bundle savedInstanceState) { // ... rootView = findViewById(R.id.root_layout); searchView = (SearchView) findViewById(R.id.search_view); } @Override protected void onResume() { super.onResume(); searchView.setQuery("", false); rootView.requestFocus(); } 

Используйте эту строку кода в методе onResume

 if (searchView != null) { searchView.setQuery("", false); searchView.clearFocus(); searchView.onActionViewCollapsed(); } 

Самое простое (и я думаю, единственное 100% работающее) решение – создать невидимый LinearLayout . Этот LinearLayout захватит фокус с помощью EditText .

Когда в активности переходят к родительскому макету, а также в фрагменте тоже делают то же самое в framelayout. Просто добавьте этот атрибут:

андроид: focusableInTouchMode = "истина"

Напишите этот код в onResume()

  searchView.setText(""); this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);