J'utilise un élément de recherche-vue dans mon fragment pour implémenter la fonctionnalité de recherche.
<SearchView
Android:id="@+id/search_bar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginTop="7dp"
Android:layout_marginLeft="7dp"
Android:layout_marginRight="7dp"
Android:layout_marginBottom="7dp"
Android:background="@color/white" />
Le problème est que seule l'icône de recherche est cliquable. Une autre zone de la barre de recherche n'est pas cliquable. Lorsque je clique uniquement sur l'icône, je peux effectuer une recherche.
Pouvez-vous s'il vous plaît m'aider à rendre la zone de recherche entière cliquable.
Quelle est la moyenne cliquable? déclencher une action de recherche ou simplement mettre la zone d'édition en évidence? Si c'est le premier, vous pouvez simplement rendre l'icône clickable = false. et rendre la mise en page complète cliquable et implémenter un écouteur d'événement.
<SearchView
Android:id="@+id/search_bar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:clickable="true"
Android:click="onClick"
Android:layout_marginTop="7dp"
Android:layout_marginLeft="7dp"
Android:layout_marginRight="7dp"
Android:layout_marginBottom="7dp"
Android:background="@color/white" />
La méthode onClick devrait être
public void onClick(View v) {
InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
im.showSoftInput(editText, 0);
}
Cela peut être fait simplement en définissant Iconified sur false sur OnClick de SearchView.
searchBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchBar.setIconified(false);
}
});
Référence: La réponse d'Eric Lui
J'espère que ça va aider.
search_bar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
search_bar.onActionViewExpanded();
}
});
Le truc n'est pas tant de rendre la zone entière cliquable que de l'étendre puis de cacher le clavier.
Premièrement, votre mise en page dans le XML convient, laissez-la telle quelle, dans votre Java, vous souhaitez obtenir les éléments suivants:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
//Define your Searchview
SearchView searchView = (SearchView) findViewById(R.id.search_bar);
//Turn iconified to false:
searchView.setIconified(false);
//The above line will expand it to fit the area as well as throw up the keyboard
//To remove the keyboard, but make sure you keep the expanded version:
searchView.clearFocus();
}
Cela permet d’agrandir le clavier sur toute la longueur de la zone, de se concentrer sur ce qui permet de cliquer sur toute la zone, puis de supprimer le clavier afin que l’utilisateur ait l’impression de cliquer champ et faire apparaître un clavier.
Devrait accomplir ce que vous recherchez.
-Sil
ajoutez ceci à votre code __ml
Android:iconifiedByDefault="false"
il conservera ouvrez votre searchview.et pour l'effacer, ajoutez
clearfocus
à votre objet searchview.
searchView.setIconified(false);
Utilisez ceci
searchView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
searchView.onActionViewExpanded();
OR
searchView.setIconified(false);
}
});
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View view, boolean b)
{
if(!b)
{
if(searchView.getQuery().toString().length() < 1)
{
searchView.setIconified(true); //close the search editor and make search icon again
OR
searchView.onActionViewCollapsed();
}
searchView.clearFocus();
}
}
});
Écrivez les lignes de code données ci-dessous dans votre fichier Java:
SearchView searchView = (SearchView) findViewById(R.id.searchView);
searchView.setQueryHint("Enter your address");
searchView.setIconified(false);
searchView.clearFocus();
Après cela, n'oubliez pas d'écrire Android:focusable="true"
dans votre fichier XML à l'intérieur de la balise SearchView
.
Par exemple:
<SearchView
Android:id="@+id/searchView"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:focusable="true" />