java - usar - Evita que el teclado se muestre al iniciar la actividad
usar enter en java (15)
Tengo una actividad con una entrada de Edit Text
. 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?
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">
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 :)
Creo que lo siguiente puede funcionar
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Lo he usado para este tipo de cosas antes.
Esto ocurre cuando EditText es la primera vista en obtener Focus, cuando comienza la actividad. Por lo tanto, puede resolver este problema de manera confiable sin código, simplemente configurando el enfoque inicial en otra vista. Puedes hacer esto en XML, no se requiere código.
Ejemplo:
<Button
android:id="@+id/mybutton">
<requestFocus />
</Button>
Intenta esto también -
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
De lo contrario, declare en la actividad de su archivo 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 usando android:windowSoftInputMode
para 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.
La mejor solución para mi, 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();
}
Ocultarlo para todas las actividades utilizando el tema.
<style name="MyTheme" parent="Theme">
<item name="android:windowSoftInputMode">stateHidden</item>
</style>
establecer el tema
<application android:theme="@style/MyTheme">
Para ampliar la respuesta aceptada por @Lucas:
Llama a esto desde tu actividad en uno de los eventos del ciclo de vida temprano:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Ejemplo de Kotlin:
override fun onResume() {
super.onResume()
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
Si está utilizando el nivel 21 de API, puede usar editText.setShowSoftInputOnFocus (false);
Solo agrega en AndroidManifest.xml
<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden">
</activity>
Solo agrega esto en tu archivo manifest.xml
<activity android:name=".MainActivity"
android:windowSoftInputMode="stateHidden">
Usted está todo hecho.
También puede escribir estas líneas de código en el diseño principal del archivo de diseño .xml en el que tiene el "problema": Aquí está el código:
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>
La clave es asegurarse de que el EditText no sea directamente enfocable.
¡Adiós! ;-)
Trata de declararlo en archivo de manifiesto.
<activity android:name=".HomeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden"
>
simplemente agregue esto en 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);
}
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);