2012-03-24 15 views
10

Ok, quindi ho un'attività in cui è presente un EditText e nella finestra di inserimento vengono mostrati i risultati di ricerca, quindi quello che voglio semplicemente fare è chiudere la tastiera quando i risultati della ricerca stanno per mostrare per impedire all'utente di doverlo fare . Tuttavia, se l'utente desidera perfezionare la ricerca, la tastiera dovrebbe aprirsi di nuovo se tocca nuovamente EditText.Nascondi la tastiera dopo le ricerche dell'utente?

Questo è stato più difficile di quanto immaginassi, sono stato ricercato e ho provato un paio di cose che non chiudono nemmeno la tastiera sul mio HTC, un metodo in cui InputType è impostato su INPUT_NULL che chiude la tastiera ma non aprirsi dopo.

Qualche suggerimento su come farlo?

+1

possibile duplicato di [Chiudi/nascondi la tastiera virtuale Android] (http://stackoverflow.com/questions/1109022/close-hide-the-android-soft-keyboard) –

risposta

2

I belive questo frammento di codice si chiuderà la tastiera:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

se non provare questo:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

fatemi sapere se questi lavori

+0

imm utilizzato con hideSoftInputFromWindow metodo senza oggetto creato, e dopo il metodo viene creato il suo oggetto. fonte sbagliata. –

+0

Ho copiato e incollato nell'ordine sbagliato ma dovrebbe funzionare – testingtester

+0

non possibile vedere @gabriel lo ha modificato. –

0

uso tizio seguito da nascondere keybord questo

InputMethodManager in = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
in.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

o utilizzare questo

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
8

Il modo giusto per farlo:

  1. set imeOptions a "actionSearch"
  2. inizializzare ascoltatori per l'ingresso e cercare il pulsante (se previsto)

    searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
        @Override 
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
         if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
          performSearch(); 
          return true; 
         } 
    
         return false; 
        } 
    }); 
    view.findViewById(R.id.bigSearchBar_button).setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         performSearch(); 
        } 
    }); 
    
  3. Nascondi tastiera quando l'utente fa clic su Cerca. Per garantire che la tastiera non mostrerà quando l'utente riduce al minimo e ripristina Activity è necessario rimuovere attenzione dal EditText

    private void performSearch() { 
        searchEditText.clearFocus(); 
        InputMethodManager in = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
        in.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0); 
        ... perform search ... 
    } 
    
+0

Grazie per la soluzione molto semplice e piacevole! –

17
@Override 
public boolean onQueryTextSubmit(String query) { 
    // Your search methods 

    searchView.clearFocus(); 
    return true; 
} 

Dritto al punto e pulito.

Problemi correlati