Android: el teclado no aparece en la ventana flotante
Estoy escribiendo una aplicación que utiliza el código siguiente para dibujar un edittext en la pantalla sobre las aplicaciones en ejecución:
WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, PixelFormat.TRANSLUCENT); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); windowManager.addView(mEditText, params);
El xml para el edittext es:
- Ocultar teclado virtual en la carga de la aplicación
- VS emulador para Android deja de responder al teclado
- AdjustResize no funciona después de despedir el teclado haciendo clic en el teclado exterior
- Android: ¿Cómo crear teclas de forma personalizada en el teclado?
- Cordova Ionic: habilita el teclado suave de emoji de android
<EditText android:id="@+id/mEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="3" android:inputType="textAutoComplete|text" android:focusable="true" android:focusableInTouchMode="true" />
Sin embargo, centrarse en esto no abre el teclado. También he intentado programarlo para arriba con un onFocusListener:
mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) { Log.d("", "Has focus"); ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, InputMethodManager.SHOW_IMPLICIT); } else { Log.d("", "Lost focus"); } } });
Pero aunque eso se llama, como se ve desde el logcat, no pasa nada. El único método que he encontrado hasta ahora para mostrar el teclado está utilizando:
getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, 0);
Pero eso parece escribir en la pantalla y no en el edittext. También he intentado clear focusable cuando el edittext se muestra, pero en vano.
Supongo que el problema es porque estoy usando una "ventana flotante", pero debe haber una manera de hacer que este trabajo como las aplicaciones, tales como calculadoras flotantes existen en la playstore que tienen entrada. ¿Alguien tiene alguna idea? Estoy perplejo 🙁
- Mostrar automáticamente el teclado personalizado para EditText. Androide
- Cómo ver de forma programática teclado de diferentes idiomas en la aplicación android?
- Cómo cambiar la altura de un teclado blando en tiempo de ejecución?
- Android: ListView no se desplaza con el teclado
- Ocultar el teclado al mostrar DialogFragment en la tableta?
- Teclado de software de Android cambiar entre numérico y alfabético programáticamente
- Android: problemas de edittext y de teclado multilínea
- ¿Cómo forzar el teclado a mostrar / ocultar?
Mi mal .. me di cuenta si me quito el WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE funciona bien .. tonto error
Utilizar WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT);
Para más detalle y ejemplo, siga el enlace: https://github.com/atifmahmood29/overlays-floating-window-like-facebook-messenger
Programaticamente:
editText.requestFocus();
O mediante XML:
<EditText...> <requestFocus /> </EditText>
- "Borrar datos de usuario" android
- Android Custom View no maneja la transparencia / alpha de la manera correcta