Tengo una actividad con una Edit Text
entrada. Cuando se inicializa la actividad, se muestra el teclado de Android. ¿Cómo puede permanecer oculto el teclado hasta que el usuario enfoque la entrada?
android:windowSoftInputMode="adjustPan"
?
Tengo una actividad con una Edit Text
entrada. Cuando se inicializa la actividad, se muestra el teclado de Android. ¿Cómo puede permanecer oculto el teclado hasta que el usuario enfoque la entrada?
android:windowSoftInputMode="adjustPan"
?
Respuestas:
Creo que lo siguiente puede funcionar
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Lo he usado para este tipo de cosas antes.
EditText
? :) Esto es para ocultar el teclado cuando comienza la actividad que contieneEditText
Prueba esto también -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
De lo contrario, declare en la actividad de su archivo de manifiesto:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
Si ya ha estado utilizando android:windowSoftInputMode
un valor como adjustResize
o adjustPan
, puede combinar dos valores como:
<activity
...
android:windowSoftInputMode="stateHidden|adjustPan"
...
>
Esto ocultará el teclado cuando sea apropiado, pero desplazará la vista de actividad en caso de que deba mostrarse el teclado.
Escóndelo para todas las actividades que usan el tema
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
establecer el tema
<application android:theme="@style/MyTheme">
Agregue estas dos propiedades a su diseño principal (por ejemplo, diseño lineal, diseño relativo)
android:focusable="false"
android:focusableInTouchMode="false"
Hará el truco :)
true
funcionen, según la respuesta de Jack T. ¿Hubo un cambio de comportamiento en las versiones recientes?
false
embargo, no entiendo por qué configurar estos debería funcionar, ya que la idea es alejar el foco de los cuadros de Editar Texto.
Intenta declararlo en un archivo manifiesto
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
Simplemente agregue AndroidManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
También puede escribir estas líneas de código en el diseño primario directo del archivo de diseño .xml en el que tiene el "problema":
android:focusable="true"
android:focusableInTouchMode="true"
Por ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
...
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
EDITAR:
Ejemplo si EditText está contenido en otro diseño:
<?xml version="1.0" encoding="utf-8"?>
<ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
... > <!--not here-->
... <!--other elements-->
<LinearLayout
android:id="@+id/theDirectParent"
...
android:focusable="true"
android:focusableInTouchMode="true" > <!--here-->
<EditText
android:id="@+id/myEditText"
...
android:hint="@string/write_here" />
<Button
android:id="@+id/button_ok"
...
android:text="@string/ok" />
</LinearLayout>
</ConstraintLayout>
La clave es asegurarse de que EditText no sea directamente enfocable.
¡Adiós! ;-)
La mejor solución para mí, pega tu clase
@Override
public void onResume() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onResume();
}
@Override
public void onStart() {
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
super.onStart();
}
Función para ocultar el teclado.
public static void hideKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
Ocultar el teclado en el archivo AndroidManifext.xml.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateHidden">
Para ampliar la respuesta aceptada por @Lucas:
Llama a esto desde tu actividad en uno de los primeros eventos del ciclo de vida:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
Puede probar este conjunto de atributos únicos para cada elemento
TextView mtextView = findViewById(R.id.myTextView);
mtextView.setShowSoftInputOnFocus(false);
El teclado no se mostrará mientras el elemento esté enfocado
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
solo agregue esto a su Actividad:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
return super.dispatchTouchEvent(ev);
}
<activity android:windowSoftInputMode="stateHidden" ...>