Cómo obtener EditText, IME Action, textMultiLine, para trabajar para JellyBean
Me he topado con el enigma y no encuentro una solución. Parece que JellyBean cambia cómo se manejan las acciones de IME. He encontrado muchos sitios web que ofrecen una solución que realmente funciona, pero sólo para EditTexts
solo forrado. Ejemplo : Stackoverflow: onEditorAction
Mis elementos de EditText
funcionaron perfectamente hasta JellyBean. Sería adecuadamente word-wrap hasta que el usuario pulsa la tecla "Done" (return). Entonces atraparía el evento con OnEditorActionListener
y procesaría en consecuencia. He intentado varias variaciones de cambiar la configuración con los siguientes atributos XML sin éxito:
- ¿Qué es exactamente "id == EditorInfo.IME_NULL"?
- Forzar el IME de Android en pantalla completa
- Android setOnEditorActionListener () no se dispara
- Cómo agregar su propio IME personalizado en el cuadro de diálogo Seleccionar método de entrada
- Cómo implementar Multiline EditText con el botón ActionDone (sin el botón Enter)
- Solo línea
- Desplazarse horizontalmente
- tipo de entrada
- Sugerencias
- líneas
Sólo pude conseguir envoltura de palabras sin evento onEditorAction activado o sin encapsulación de palabra con el disparo de evento onEditorAction. ¿Cómo puedo obtener el empaquetado de palabras y manejar la tecla de teclado introduzca la clave al mismo tiempo para JellyBean?
Actualización 1: Incluye código solicitado. Tenga en cuenta que es así como se encuentra ahora que funciona para todas las plataformas, excepto JellyBean. Como dije antes, probé varias configuraciones XML diferentes sin éxito.
Actualización 2: Gestionado para conseguir un asimiento de un transformador de Asus que funciona JellyBean 4.1.1. Funciona bien. Así que tal vez este es un error específico del dispositivo? Mi otro dispositivo JellyBean es un Nexus 7 que ejecuta 4.1.2. ¿Puede alguien verificar esto con otros dispositivos?
Código:
private class OnMyEditorActionListener implements OnEditorActionListener { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_GO) { doSomething(); return true; } return false; } }
<EditText android:id="@+id/editbox_box_et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@null" android:gravity="top|center_horizontal" android:imeOptions="actionGo" android:inputType="textMultiLine|textNoSuggestions" android:padding="@dimen/spacing_half" android:textSize="24sp" > </EditText>
- ICS teclado de vuelta, los botones de inicio no tomar contacto cuando se abre en la superposición
- Teclado suave de Android no panorámico vista web
- ¿Cómo puedo manejar ImeOptions?
- Android: Editar texto Ir botón
- ¿Cómo determinar el IME actual en Android?
- Android: ¿Cómo / dónde colocar código de gesto en IME?
- "IME murió" y android.os.DeadObjectException
- Teclado IME con emojis
Proporcione un ID por sí mismo a su botón de envío / envío
En actividad :
private class OnMyEditorActionListener implements OnEditorActionListener { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == R.id.your_new_ID || actionId == EditorInfo.IME_Null) { doSomething(); return true; } return false; } }
En xml :
<EditText android:id="@+id/editbox_box_et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@null" android:gravity="top|center_horizontal" android:inputType="textMultiLine|textNoSuggestions" android:padding="@dimen/spacing_half" android:textSize="24sp" android:imeActionId="@+id/your_new_ID" android:imeActionLabel="Go"> </EditText>
Pruebe lo siguiente:
android:inputType="text" android:imeOptions="actionNone"
Y también compruebe hacia fuera con diversas opciones para el embalaje de la palabra en el archivo de xml del imeOptions
Después de un montón de pruebas, he determinado que es un error específico para el Nexus 7 y no hay nada de código sabio que puedo hacer para evitarlo. Curiosamente, si descarga un teclado diferente de Google Play, entonces el código realmente funciona.
Prueba a agregar atributo android:imeActionId
con valor entero (2 para actionGo). http://developer.android.com/reference/android/widget/TextView.html#attr_android:imeOptions
Tuve problemas para obtener el evento desencadenado por Jelly Bean 4.1.2. La adición de tipo de entrada me ayudó.
android:imeOptions="actionGo" android:inputType="text"
- Android se conecta al evento de Internet
- Ejecutar archivo por lotes después de cada generación en eclipse