Cómo puedo fijar el foco (y exhibir el teclado) en mi EditText programmatically

Tengo un diseño que contiene algunas vistas como esta:

<LinearLayout> <TextView...> <TextView...> <ImageView ...> <EditText...> <Button...> </linearLayout> 

¿Cómo puedo fijar el foco (exhibir el teclado) en mi EditText programmatically?

He intentado esto y funciona solamente cuando TabHost mi Activity normalmente, pero cuando lo TabHost en un TabHost , no trabaja.

 txtSearch.setFocusableInTouchMode(true); txtSearch.setFocusable(true); txtSearch.requestFocus(); 

8 Solutions collect form web for “Cómo puedo fijar el foco (y exhibir el teclado) en mi EditText programmatically”

Prueba esto:

 EditText editText = (EditText) findViewById(R.id.myTextViewId); editText.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); 

http://developer.android.com/reference/android/view/View.html#requestFocus ()

utilizar:

 editText.requestFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 

showSoftInput no funcionaba para mí en absoluto.

Pensé que necesitaba establecer el modo de entrada: android:windowSoftInputMode="stateVisible" (aquí en el componente Activity en el manifiesto)

¡Espero que esto ayude!

Esto funcionó para mí, gracias a ungalcrys

Mostrar teclado:

 editText = (EditText)findViewById(R.id.myTextViewId); editText.requestFocus(); InputMethodManager imm = (InputMethodManager)getSystemService(this.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); 

Ocultar teclado:

 InputMethodManager imm = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); 
 final EditText tb = new EditText(this); tb.requestFocus(); tb.postDelayed(new Runnable() { @Override public void run() { InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.showSoftInput(tb, InputMethodManager.SHOW_IMPLICIT); } }, 1000); 

Aquí está Clase KeyboardHelper para ocultar y mostrar el teclado

 import android.content.Context; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; /** * Created by khanhamza on 06-Mar-17. */ public class KeyboardHelper { public static void hideSoftKeyboard(Context context, View view) { if (context == null) { return; } InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } public static void hideSoftKeyboard(Context context, EditText editText) { InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); } public static void openSoftKeyboard(Context context, EditText editText) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); } } 

No pude obtener ninguna de estas respuestas para trabajar por su cuenta. La solución para mí fue combinarlos:

 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); editText.requestFocus(); imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED); 

No estoy seguro de por qué eso era necesario para mí – según los documentos parece que cualquiera de los métodos debería haber trabajado por su cuenta.

A continuación se explica cómo se puede realizar una extensión kotlin para mostrar y ocultar el teclado virtual:

 fun View.showKeyboard() { this.requestFocus() val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT) } fun View.hideKeyboard() { val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } 

Entonces usted puede hacer esto:

 editText.showKeyboard() // OR editText.hideKeyboard() 
  • Cómo borrar el enfoque de todos los elementos seleccionables en una vista?
  • Cómo eliminar el foco de SearchView?
  • OnFocusChange no siempre funciona
  • EditText pierde foco cuando aparece el teclado; Requiere tocar dos veces para editar
  • Android: Force EditText para eliminar el enfoque?
  • RequestFocus saltando siguiente EditText
  • Android EditText AutoFocus al próximo EditText cuando está en maxlength
  • Eclipse editText eliminar el foco (cursor) cuando se hace presionado
  • Comportamiento extraño con selectAllOnFocus cuando EditText está en ListView
  • Android WebKit enfocado textarea no dibujar imagen de fondo
  • Editado Android enfoque automático
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.