Tengo un SearchView e intento agregar un texto de sugerencia. Parece que solo puede mostrar la sugerencia cuando el usuario realmente toca el SearchView, busqué en Google mucho e intenté diferentes enfoques que encontré en StackOverflow como:

searchView.onActionViewExpanded();
searchView.setIconified(true);
searchView.setQueryHint("Mitarbeiter suchen");

O jugando un poco más con el código anterior. También intenté agregar IconifiedByDefault en el archivo XML pero no fue de ayuda.

Estoy seguro de que hay una manera de hacerlo. ¿Alguien puede ayudar, por favor? :)

fragment_main.xml

<android.support.v7.widget.SearchView
    android:id="@+id/search_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:queryHint="Mitarbeiter suchen">

</android.support.v7.widget.SearchView>
10
Abed Naseri 23 jun. 2017 a las 12:39

3 respuestas

La mejor respuesta

Comprueba si searchView está enfocado o no por el método isFocused (). Si coincide, entonces se despejará el foco.

searchView = (SearchView) findViewById(R.id.searchView);
searchEditText = (EditText) findViewById(R.id.search_src_text); //SearchView editText
closeButton = (ImageView) findViewById(R.id.search_close_btn); //X button of SearchView

searchView.onActionViewExpanded(); //new Added line
searchView.setIconifiedByDefault(false);
searchView.setQueryHint("Search Here");

if(!searchView.isFocused()) {
    searchView.clearFocus();
}

//Query
searchView.setOnQueryTextListener(new 
           SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            return false;
        }
    });

//This is the your x button
closeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Clear the text from EditText view
            searchEditText.setText("");

            //Clear query
            searchView.setQuery("", false);
            searchView.clearFocus();
        }
    });

Aquí está la captura de pantalla de mi aplicación de demostración y está fragmentada.

3
Shamsul Arafin Mahtab 15 ago. 2017 a las 12:32

Si desea que el campo de búsqueda esté siempre visible, llame a setIconifiedByDefault (false)

Programáticamente setIconifiedByDefault(false)

En XML app:iconifiedByDefault="false"

3
santalu 12 ago. 2017 a las 16:35

Configurar iconifiedByDefault y focusable propiedades en false funcionó para mí.

<android.support.v7.widget.SearchView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    app:iconifiedByDefault="false"
    app:queryHint="test" />
13
Gnzlt 7 nov. 2017 a las 13:12