Abrir el teclado virtual programáticamente
Tengo una actividad sin los widgets del niño para él y el archivo xml correspondiente es,
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myLayout" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:focusable="true" > </LinearLayout>
Y quiero abrir el teclado suave programmatically mientras que la actividad consigue start.and qué he intentado hasta ahora es,
- Ocultar el teclado de Android para EditText
- Mostrando el teclado sin animación
- Icono de búsqueda en el teclado virtual
- Cómo evitar que el teclado en pantalla cubra el EditText en android
- Teclado Android "Ir" para "Buscar"
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (inputMethodManager != null) { inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); }
Dame alguna guía.
- ¿Cómo puedo asegurarme de que una ventana siempre esté mostrada encima del teclado virtual?
- Cómo cambiar el color de las claves en Clase KeyboardView en el teclado Android personalizado?
- Evento clave de Android para la tecla de retroceso cuando se muestra el teclado virtual?
- Teclado con scrollView
- Detectar evento posterior en el teclado de Android
- Cambiar el teclado predeterminado de android utilizando ADB o código java
- Abrir el teclado virtual para el elemento ListAdapter contiene una vista con una cadena
- Obtener el idioma del teclado o detectar el idioma de entrada del usuario en Android
He utilizado las siguientes líneas para mostrar el teclado virtual manualmente dentro del evento onclick y el teclado es visible.
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInputFromWindow( linearLayout.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
Pero todavía no puedo abrir esto mientras que la actividad se abre, así que es cualquier solución para esto.
En su archivo de manifiesto, intente agregar lo siguiente a la <activity>
que desea mostrar el teclado cuando se inicia la actividad:
android:windowSoftInputMode="stateVisible"
Esto debería hacer que el teclado se vuelva visible cuando se inicia la actividad.
Para obtener más opciones, consulte la documentación .
Siga por favor el código abajo. Estoy seguro de que su problema será resuelto.
if (imm != null){ imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); }
Esto es obras
<activity ... android:windowSoftInputMode="stateVisible" > </activity>
o
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Todo lo que necesitaba era exponer el teclado, en un momento muy preciso. Esto funcionó para mí! Gracias Benites.
private Handler mHandler= new Handler();
Y en el momento preciso:
mHandler.post( new Runnable() { public void run() { InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInputFromWindow(yourEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); yourEditText.requestFocus(); } });
He utilizado las siguientes líneas para mostrar el teclado suave manualmente dentro del evento onclick.
public void showKeyboard(final EmojiconEditText ettext){ ettext.requestFocus(); ettext.postDelayed(new Runnable(){ @Override public void run(){ InputMethodManager keyboard=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.showSoftInput(ettext,0); } } ,200); }
Poner eso en onResume método:
findViewById(R.id.root_view_of_your_activity_layout).post( new Runnable() { public void run() { InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInputFromWindow(yourEditText.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); yourEditText.requestFocus(); } });
El runnable es necesario porque cuando el sistema operativo dispara el método onResume no puede estar seguro de que todas las vistas donde dibujar, por lo que el método de post llamado desde su diseño raíz hace que espere hasta que cada vista está lista.
Parece que esto está funcionando
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_patientid); editText = (EditText)findViewById(R.id.selectPatient); //editText.requestFocus(); //works without that } @Override protected void onResume() { findViewById(R.id.selectPatient).postDelayed( new Runnable() { public void run() { editText.requestFocus(); InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT); } },100); super.onResume(); }
Parece que esto funciona mejor: en manifiesto:
<application> <activity android:name="com.doodkin.myapp.ReportActivity" android:label="@string/title_activity_report" android:screenOrientation="sensor" android:windowSoftInputMode="stateHidden" > // add this or stateVisible </activity> </application>
Parece que el trabajo de manifiesto en android 4.2.2 pero no funciona en android 4.0.3
He utilizado como esto para mostrar el soft keyboard programatically y esto es trabajado para mí para evitar el redimensionamiento automático de la pantalla mientras se inicia el teclado.
En manifiesto:
<activity android:name="XXXActivity" android:windowSoftInputMode="adjustPan"> </activity>
En XXXTelección:
EditText et = (EditText))findViewById(R.id.edit_text); Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInputFromWindow(et.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); } }; timer.schedule(task, 200);
Supongo que esto ahorrará tiempo a otros para buscar este problema.
In onCreate el método de actividad o onActivityCreated de un fragmento
.... view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { view.removeOnPreDrawListener(this); InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); // !Pay attention to return `true` // Chet Haase told to return true; } });
InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
Similar a la respuesta de @ ShimonDoodkin esto es lo que hice en un fragmento.
Ya hay demasiadas respuestas pero nada funcionó para mí aparte de esto
inputMethodManager.showSoftInput(emailET,InputMethodManager.SHOW_FORCED);
Utilicé showSoftInput
con SHOW_FORCED
Y mi actividad ha
android:windowSoftInputMode="stateVisible|adjustResize"
Espero que esto ayude a alguien
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Utilice el código anterior en onResume () para abrir Soft Keyboard
- ¿Es una mala práctica utilizar márgenes negativos en Android?
- WebView enlace haga clic en abrir navegador predeterminado