2011-10-12 1 views

risposta

5

Per questo bisogna prendere l'onTouchListener sul layout principale del file di layout. su TouchListener devi codificare per nascondere la tastiera quando fai clic all'esterno di EditText. Si prega di seguire XML Layout e classe Java per risolvere questo problema, segui l'URL seguente.

http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html

+0

Se si desidera ulteriore aiuto, si prega di eseguire una query nel mio URL del blog o postare commenti qui. –

+0

grazie funziona bene .. – Archana

2

Un modo è che è possibile impostare un cambiamento attivo ascoltatore al EditText. Quando il widget perde lo stato attivo si può nascondere la Keyborad da: -

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

et.setOnFocusChangeListener (nuova OnFocusChangeListener() { \t \t \t \t @Override \t \t \t \t onFocusChange public void (Visualizza v, booleano haFocus) { \t \t \t \t \t \t \t \t \t \t Log.d ("onChange", "focus ==" + hasFocus); }}); – Archana

+0

quando clicco all'esterno di edittext come listview allora non risponde – Archana

+2

edittext non cambierà focus quando si fa clic all'esterno di esso con setOnFocusChangeListener. Funzionerà solo quando si cambia l'attenzione su qualcos'altro che è focalizzabile, come un altro edittoxt. – Karl

0

È possibile raggiungere questo obiettivo facendo le seguenti operazioni:

  1. rendere la vista padre (visualizzare il contenuto della vostra attività) cliccabili e focusable aggiungendo i seguenti attributi

    android:clickable="true" 
        android:focusableInTouchMode="true" 
    
  2. Implementare un metodo hideKeyboard()

    public void hideKeyboard(View view) { 
         InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE); 
         inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 
        } 
    
  3. Infine, impostare onFocusChangeListener del proprio edittext.

    edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
         @Override 
         public void onFocusChange(View v, boolean hasFocus) { 
          if (!hasFocus) { 
           hideKeyboard(v); 
          } 
         } 
        }); 
    

Da This source

0

Un altro modo simile alla risposta accettata è quella di creare una sottoclasse la vista radice del layout e ignorare OnInterceptTouchEvent, nascondere la tastiera e restituire false per consentire al tocco di propagarsi come al solito .

L'esempio che segue è per Xamarin, ma è facile da porto a Java:

public class KeyboardHidingScrollView : ScrollView 
{ 
    public KeyboardHidingScrollView (Context context) : base (context) 
    { 
    } 

    public KeyboardHidingScrollView (Context context, IAttributeSet attrs) : base (context, attrs) 
    { 
    } 

    public override bool OnInterceptTouchEvent (Android.Views.MotionEvent ev) 
    { 
     var methodManager = (InputMethodManager)Context.GetSystemService (Context.InputMethodService); 
     methodManager.HideSoftInputFromWindow (WindowToken, HideSoftInputFlags.None); 
     return false; 
    } 
}