Pregunta ¿Cómo desactivar el teclado emergente cuando está en edittext?


En mi aplicación, la primera vista de todas mis pantallas es EditText, de modo que cada vez que voy a una pantalla aparece el teclado en pantalla. ¿Cómo puedo desactivar esta ventana emergente y habilitarla cuando hago clic manualmente en EditText ????

    eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);

    eT.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {

            if(hasFocus){
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
            imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
            }
        }
    });

código xml:

<ImageView
    android:id="@+id/feedPageLogo"
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:src="@drawable/wic_logo_small" />

<Button
    android:id="@+id/goButton_feed"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="@string/go" />

<EditText
    android:id="@+id/searchAutoCompleteTextView_feed"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/goButton_feed"
    android:layout_toRightOf="@id/feedPageLogo"
    android:hint="@string/search" />

<TextView
    android:id="@+id/feedLabel"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/feedPageLogo"
    android:gravity="center_vertical|center_horizontal"
    android:text="@string/feed"
    android:textColor="@color/white" />

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ButtonsLayout_feed"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <Button
        android:id="@+id/feedButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/feed"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/iWantButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/iwant"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/shareButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/share"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/profileButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/profile"
        android:textColor="@color/black" />
</LinearLayout>

<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/feedListView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/ButtonsLayout_feed"
    android:layout_below="@id/feedLabel"
    android:textSize="15dp" >
</ListView>

la tercera vista (EditText) es donde está el foco.


75
2018-05-16 04:02


origen


Respuestas:


La mejor solución se encuentra en el archivo de Manifiesto del proyecto (AndroidManifest.xml), agregue el siguiente atributo en activity construir

android: windowSoftInputMode = "stateHidden"


Ejemplo:

    <activity android:name=".MainActivity" 
              android:windowSoftInputMode="stateHidden" />

Descripción: 

  • El estado del teclado virtual, ya sea oculto o visible, cuando la actividad se convierte en el foco de atención del usuario.
  • El ajuste realizado en la ventana principal de la actividad: si se redimensiona más pequeño para dejar espacio para el teclado virtual o si su contenido se desplaza para hacer visible el foco actual cuando parte de la ventana está cubierta por el teclado virtual.

Introducido en: 

  • API Nivel 3.

Enlace a los Documentos

Nota: Los valores establecidos aquí (que no sean "stateUnspecified" y "adjustUnspecified") anulan los valores establecidos en el tema.


159
2017-12-17 04:53



Tienes que crear una vista, encima de EditText, que tenga un enfoque 'falso':

Algo como :

<!-- Stop auto focussing the EditText -->
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@android:color/transparent"
    android:focusable="true"
    android:focusableInTouchMode="true">
</LinearLayout>

<EditText
    android:id="@+id/searchAutoCompleteTextView_feed"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:inputType="text" />

En este caso, utilicé LinearLayout para solicitar el enfoque. Espero que esto ayude.

Esto funcionó perfectamente ... gracias a Zaggo0


81
2018-05-16 07:44



     edittext.setShowSoftInputOnFocus(false);

Ahora puede usar cualquier teclado personalizado que desee.


25
2018-03-28 03:43



Agregue el código siguiente en su clase de actividad.

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

El teclado emergerá cuando el usuario haga clic en EditText


20
2018-02-06 11:57



La gente ha sugerido muchas soluciones excelentes aquí, pero utilicé esta técnica simple con EditText (no se requiere nada en Java y AnroidManifest.xml). Simplemente configure su InTouchMode enfocable y enfocable en false directamente en EditText.

 <EditText
        android:id="@+id/text_pin"
        android:layout_width="136dp"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:textAlignment="center"
        android:inputType="numberPassword"
        android:password="true"
        android:textSize="24dp"
        android:focusable="false"
        android:focusableInTouchMode="false"/>

Mi intención aquí es usar este cuadro de edición en la actividad de bloqueo de aplicaciones donde le pido al usuario que ingrese el PIN y deseo mostrar mi PIN personalizado. Probado con minSdk = 8 y maxSdk = 23 en Android Studio 2.1

enter image description here


14
2017-11-16 14:42



Puede usar el siguiente código para deshabilitar el teclado OnScreen.

InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(editText.getWindowToken(), 0);

9
2018-05-16 04:06



Dos soluciones simples:

Primera solución se agrega debajo de la línea de código en el archivo xml de manifiesto. En el archivo Manifiesto (AndroidManifest.xml), agregue el siguiente atributo en la construcción de la actividad

android: windowSoftInputMode = "stateHidden"

Ejemplo:

<activity android:name=".MainActivity" 
          android:windowSoftInputMode="stateHidden" />

Segunda solución está agregando debajo de la línea de código en actividad

//Block auto opening keyboard  
  this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Podemos usar cualquier solución de arriba. Gracias


7
2017-10-17 04:45