Search code examples
androidfocussearchview

How to remove focus from SearchView?


I want to remove focus and text from SearchView in onResume().

I tried searchView.clearFocus() but it is not working.

This is my xml code:

<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" />

Solution

  • I want to remove focus and text from SearchView in onResume()

    To achieve this you could set your root layout focusable with the android:focusableInTouchMode attribute and request focus on that View in onResume().

    For example:

    <?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>
    

    And then in your 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();
    }