2011-10-12 20 views

Respuesta

5

Para esto usted tiene que tomar la onTouchListener en la disposición de los padres del archivo de diseño. en el TouchListener tienes que codificar para ocultar el teclado cuando haces clic fuera de EditText. Siga el diseño XML y la clase Java para resolver este problema. Siga la siguiente URL.

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

+0

Si quiere más ayuda, consulte en la URL de mi blog o publique un comentario aquí. –

+0

gracias, está funcionando muy bien .. – Archana

2

Una forma es que se puede establecer un oyente cambio de foco a la EditarTexto. Cuando el widget pierde el foco puede ocultar la Keyborad por: -

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

et.setOnFocusChangeListener (nueva OnFocusChangeListener() { \t \t \t \t @ Override \t \t \t \t pública onFocusChange vacío (Ver v, boolean hasFocus) { \t \t \t \t \t \t \t \t \t \t Log.d ("onChange", "focus ==" + hasFocus); }}); – Archana

+0

cuando hago clic fuera de edittext como listview entonces no responde – Archana

+2

edittext no cambiará el foco al hacer clic fuera de él con setOnFocusChangeListener. Solo funcionará cuando cambie el foco a otra cosa que sea enfocable, como otro texto de edición. – Karl

0

Usted puede lograr esto haciendo los siguientes pasos:

  1. hacer que la vista padre (ver el contenido de su actividad) se puede hacer clic y enfocable mediante la adición de los siguientes atributos

    android:clickable="true" 
        android:focusableInTouchMode="true" 
    
  2. Implementar un método hideKeyboard()

    public void hideKeyboard(View view) { 
         InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE); 
         inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 
        } 
    
  3. Por último, configure el OnFocusChangeListener de su texto de edición.

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

De This source

0

Otra forma similar a la respuesta aceptada es subclase de la vista raíz de la disposición y anular OnInterceptTouchEvent, ocultar el teclado y devolver false para permitir que el contacto se propague como de costumbre .

El siguiente ejemplo es para Xamarin pero es fácil de portar 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; 
    } 
} 
Cuestiones relacionadas