2015-05-26 1 views
12

Sto utilizzando un elemento della vista di ricerca nel mio frammento per implementare la funzione di ricerca.Android - Rende cliccabile l'intera barra di ricerca

<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

Il problema è solo l'icona di ricerca è cliccabile altra area nella barra di ricerca non è cliccabile, quando scatto l'icona solo io posso in grado di cercare.

enter image description here

Potete per favore mi aiuti a rendere l'intera area di ricerca cliccabile.

enter image description here

+0

tenta di aggiungere 'Android: cliccabile = "true"' a 'SearchView' – Lamorak

+0

Se avete intenzione di renderlo cliccabile per cercare allora come mai si sta andando a modificare il testo scritto al suo interno e non è focalizzato? – pratz9999

+0

@Lamorak: Non funziona con l'aggiunta di android: clickable = "true" al mio codice. Ora anche l'altra area non è selezionabile per iniziare la ricerca. – Saran

risposta

4

Cosa si intende il cliccabile? attivare l'azione di ricerca o semplicemente mettere a fuoco l'area di modifica? Se è il primo, puoi semplicemente rendere l'icona cliccabile = falso. e rendere l'intero layout cliccabile e implementare un listener di eventi.

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

Il metodo onClick dovrebbe essere

public void onClick(View v) { 
  InputMethodManager im = ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)); 
    im.showSoftInput(editText, 0); 
} 
+2

Clickable significa: quando tocchi ovunque sulla barra di ricerca quando non è a fuoco, dovrebbe iniziare il processo di ricerca. – Saran

+0

Quindi quando si tocca l'area di modifica, qual è l'azione? modificare le cose che vuoi cercare o semplicemente cercare? puoi implementare il listener di eventi chiave quando premi KEY ENTER. – Sethbrin

+0

Ok, ma abbiamo solo due metodi pubblici per la visualizzazione di ricerca ** "onQueryTextChange", "onQueryTextSubmit", ** quindi come implementare ** onClick ** listener per cercare-visualizzare, se è così posso impostare l'iconificato su vero su quel click listener giusto? – Saran

1

aggiungere questo alla tua xml android:iconifiedByDefault="false" manterrà aprire il tuo SearchView.

e per cancellarlo aggiungere clearfocus all'oggetto searchview.

5
search_bar.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     search_bar.onActionViewExpanded(); 
    } 
}); 
5

Il trucco non è tanto per rendere l'intera area cliccabile tanto quanto lo è quello di espandere e poi nascondere la tastiera.

In primo luogo, il layout in XML va bene, lasciarlo così com'è, in Java, si desidera avere il seguente:

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

Ciò che questo compie è si espande la tastiera per l'intera lunghezza del l'area, si concentra su di essa, che consente all'intera area di essere cliccabile, e quindi rimuove la tastiera in modo che appaia all'utente come se fosse in grado di fare clic su quel campo e far apparire una tastiera.

Dovrebbe realizzare ciò che stai cercando.

-Sil

+2

Questo è semplice e pulito – user3290180

25

Questo può essere fatto semplicemente impostando ad icona su false su clic del SearchView.

searchBar.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     searchBar.setIconified(false); 
    } 
}); 

Riferimento: Eric Lui's answer

Speriamo che vi aiuterà.

+1

Questa dovrebbe essere la risposta accettata. – stevyhacker

+0

funziona bene! –

0

searchView.setIconified (false) ha lavorato

Problemi correlati