2017-06-23 1 views
3

J'ai un SearchView et j'essaie d'ajouter un texte d'indice. Il semble que vous ne pouvez montrer l'indication lorsque l'utilisateur tape sur le fait SearchView, je googlé beaucoup et ai essayé différentes approches que j'ai trouvé sur StackOverflow tels que:Android SearchView afficher le texte de l'indice avant que l'utilisateur commence à taper

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

ou jouer autour de plus avec le code ci-dessus. J'ai également essayé d'ajouter IconifiedByDefault dans le fichier XML, mais ce n'était pas une aide.

Je suis sûr qu'il y a un moyen pour cela. Quelqu'un peut-il aider s'il vous plaît? :) méthode

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> 
+0

utilisation comme widget infobulle pour it.For exemple .... https: //github.com/jayrambhia/Tooltip –

Répondre

0

vérifie si SearchView se concentre ou non par isFocused(). Si les correspondances, cela effacera le focus.

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(); 
     } 
    }); 

Here is the screenshot of my demo app and it is in fragment.

+0

Non, je ne veux pas afficher le clavier ou faire SearchView actif par défaut! Je veux juste montrer le texte (indice) là-bas. –

+0

J'ai édité mes lignes et testé. Ça devrait marcher. –

+0

Etes-vous sûr que cela fonctionne pour vous? ça ne marche pas pour moi. Lorsque j'ouvre le fragment, SearcView est actif et le clavier est en place. –

1

Si vous voulez que le champ de recherche d'être toujours visible, appelez setIconifiedByDefault (false)

Programmatically setIconifiedByDefault(false)

En XML app:iconifiedByDefault="false"

+0

Non Je ne veux pas afficher le clavier ou rendre searchView actif par défaut! Je veux juste montrer le texte (indice) là-bas. –

3

Le réglage iconifiedByDefault et focusable propriétés à false ont fonctionné pour moi.

<android.support.v7.widget.SearchView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    app:iconifiedByDefault="false" 
    app:queryHint="test" /> 
+0

A travaillé pour moi, merci! – Peterdk