Ich verwende ein Suchansichtselement in meinem Fragment, um die Suchfunktion zu implementieren.
<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" />
Das Problem ist nur das Suchsymbol ist anklickbar. Der andere Bereich in der Suchleiste ist nicht anklickbar. Wenn ich auf das Symbol klicke, kann ich nur suchen.
Können Sie mir bitte helfen, den gesamten Suchbereich anklickbar zu machen.
Was ist das klickbare Mittel? Suchaktion auslösen oder nur den Bearbeitungsbereich fokussieren? Wenn es das erste ist, können Sie das Symbol einfach anklickbar machen = false. und das gesamte Layout anklickbar machen und einen Ereignis-Listener implementieren.
<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" />
Die onClick-Methode sollte sein
public void onClick(View v) {
InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE));
im.showSoftInput(editText, 0);
}
Dies kann einfach durch Setzen von Iconified auf OnClick of SearchView auf false eingestellt werden.
searchBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchBar.setIconified(false);
}
});
Referenz: Eric Luis Antwort
Hoffentlich wird es helfen.
search_bar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
search_bar.onActionViewExpanded();
}
});
Der Trick besteht nicht so sehr darin, den gesamten Bereich anklickbar zu machen, sondern ihn zu erweitern und die Tastatur auszublenden.
Erstens ist Ihr Layout in der XML-Datei in Ordnung. Lassen Sie es so, wie es in Java ist, und Sie möchten Folgendes haben:
@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();
}
Dies bewirkt, dass die Tastatur auf die gesamte Länge des Bereichs ausgedehnt wird. Sie fokussiert sich darauf, sodass der gesamte Bereich anklickbar ist. Anschließend wird die Tastatur entfernt, sodass der Benutzer so aussieht, als könne er darauf klicken Feld und bringen Sie eine Tastatur.
Sollte erreichen, was Sie suchen.
-Sil
fügen Sie dies zu Ihrem xml
Android:iconifiedByDefault="false"
hinzu, der beibehalten wird Öffnen Sie Ihre Suchansicht.und um es zu löschen, fügen Sie
clearfocus
zu Ihrem Suchobjekt hinzu.
searchView.setIconified(false);
Für die neuesten Versionen von Android - Versuchen Sie:
app:iconifiedByDefault="false"
Beispiel -
<Android.support.v7.widget.SearchView
Android:id="@+id/source_location_search"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginLeft="20dp"
Android:layout_marginTop="15dp"
Android:layout_marginRight="20dp"
app:iconifiedByDefault="false"
app:queryHint="Your hint text" />
Benutze das
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();
}
}
});
Schreiben Sie die unten angegebenen Codezeilen in Ihre Java-Datei:
SearchView searchView = (SearchView) findViewById(R.id.searchView);
searchView.setQueryHint("Enter your address");
searchView.setIconified(false);
searchView.clearFocus();
Vergessen Sie nicht, Android:focusable="true"
in Ihre XML-Datei in SearchView
-Tag zu schreiben.
Zum Beispiel:
<SearchView
Android:id="@+id/searchView"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:focusable="true" />