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,

 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.

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.

https://stackoverflow.com/a/29229865/2413303

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

  • Teclado que no se muestra en api 19, pero funciona bien en piruletas
  • No se puede obtener el teclado para cargar onCreate ()
  • Cambiar el perfil del teclado mediante programación
  • Desplácese hasta el teclado suave
  • El teclado se abre como pantalla completa en modo horizontal
  • ¿Teclado suave androide aduana "Hecho" texto del botón?
  • Mensaje de error del teclado virtual de Android
  • Android OnEditorActionListener () actionId da 0 cuando hago clic en la tecla Hecho
  • Android: El cuadro de diálogo muestra el teclado virtual automáticamente cuando el foco está en un EditText que no funciona
  • Configurar nextFocus para EditTexts no funciona
  • ¿Mostrar sólo los botones numéricos de Soft Keyboard en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.