wake-up-neo.com

Android - Ganze Suchleiste anklickbar machen

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

enter image description here

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. 

enter image description here

Können Sie mir bitte helfen, den gesamten Suchbereich anklickbar zu machen.

enter image description here

22
Saran

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);
}
5
Sethbrin

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.

43
search_bar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        search_bar.onActionViewExpanded();
    }
});
11
Lokesh Gupta

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

10
Silmarilos

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.

4
pratz9999
searchView.setIconified(false);
1
Uthaya

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" />
0
Vaibhav Rai

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

            }
        }
    });
0
Ali Bagheri

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" />
0
Pratik Adhikari