2011-01-30 15 views
13

Cada vez que hago clic en EditText aparece la ventana emergente del teclado de Android, pero no quiero que aparezca el teclado.Ocultar el teclado de Android para EditText

Quiero ocultar de forma permanente el emergente del teclado de Android para mi aplicación actual.

¿Cómo puedo hacer esto?

+0

posible duplicado de [? Cómo cerrar/ocultar el teclado virtual de Android] (http://stackoverflow.com/questions/1109022/how-to -close-hide-the-android-soft-keyboard) –

+0

Eche un vistazo a esta [pregunta anterior] (http://stackoverflow.com/questions/1109022/how-to-close-hide-the-android-soft- teclado) que proporciona una explicación usando [InputMethodManager] (http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html). – sahhhm

+0

Creo que mi solución puede ayudar. http://stackoverflow.com/a/21480217/2127930 – cristianomad

Respuesta

12

Usted puede tratar de falsificar su EditarTexto con un botón como este:

<Button 
    android:id="@+id/edit_birthday" 
    style="@android:style/Widget.EditText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:hint="@string/hint_birthday"/> 
+0

Esto es mejor que las otras soluciones porque el teclado no se muestra en absoluto aquí. En los otros casos, puede ver el teclado emergente para una instancia antes de volver a bajar. – basilisk

+0

funciona, pero se mantiene presionada después de un solo toque. cómo evitar eso? –

+0

@ImanAkbari al establecer focusable = "false", no se mantiene presionado. – Noel

0

Estos dos líneas debe hacer lo que quiera:

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

No funciona en absoluto ... el teclado aparece como en cualquier otro momento ... ¿haces algo más? – TacB0sS

5

solución se puede encontrar here:

public void onCreate(Bundle savedInstanceState) { 

edittext = (EditText) findViewById(R.id.EditText01); 

edittext.setOnEditorActionListener(new OnEditorActionListener() { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { 
      InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      in.hideSoftInputFromWindow(edittext.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 
     } 
     return false; 
     } 
    }); 
} 
9

En el manifiesto:

<activity 
     android:name=".YourActivity" 
     . 
     . 
     . 
     android:windowSoftInputMode="stateAlwaysHidden" > 
    </activity> 
+1

Esto parece afectar solo si el teclado se muestra cuando la actividad se enfoca primero.Según la documentación oficial, "El estado del teclado virtual, ya sea oculto o visible, cuando la actividad se convierte en el foco de atención del usuario". No suprime el teclado al presionar EditText. – Mike

23

Al establecer la bandera textIsSelectable en true, se desactiva el teclado virtual.

Se puede establecer en su diseño xml de la siguiente manera:

<EditText 
    android:id="@+id/editText" 
    ... 
    android:textIsSelectable="true"/> 

o mediante programación, así:

EditText editText = (EditText) findViewById(R.id.editText); 
editText.setTextIsSelectable(true); 

El cursor estará aún presente, podrás a select/copy/cut/paste pero el teclado suave nunca se mostrará.

+1

Intenté cientos de soluciones, pero esta es la única que realmente funciona para mí. Y es el más simple. ¡¡Gracias!! – Santacrab

+0

Esta es la solución perfecta –

0

Try Try Este

public void disableSoftKeyboard(final EditText v) { 
      if (Build.VERSION.SDK_INT >= 11) { 
       v.setRawInputType(InputType.TYPE_CLASS_TEXT); 
       v.setTextIsSelectable(true); 
      } else { 
       v.setRawInputType(InputType.TYPE_NULL); 
       v.setFocusable(true); 
      } 
     } 
0

añadir este método en yout onCreate().

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

No probado pero debería funcionar!

0

en el archivo XML se puede utilizar este:

android:editable="false" 
Cuestiones relacionadas