9

Estoy tratando de crear un EditText con auto-capitalización y corrección automática implementada. He descubierto manualmente cómo agregar InputFilter para permitir el uso automático de mayúsculas, aunque esto solo funciona después de escribir la primera letra, y no he tenido suerte con la corrección automática (intenté crear un filtro de entrada que usara AutoText, pero No estoy seguro de cómo funciona todo eso). Idealmente, podría usar EditText.setInputType (...) para manejar todo, pero hasta ahora esto no ha funcionado. ¿Hay una manera de lograr esto? Mi intento fallido se muestra a continuación (obtengo una entrada normal).¿Cómo configuro múltiples tipos de entrada en EditText en Android?

EditText mEditText = new EditText(this); 
int inputType = InputType.TYPE_CLASS_TEXT; 
if (auto_capitalize) { 
    inputType = mEditText.getInputType() | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS; 
} 
if (auto_correct) { 
    inputType = mEditText.getInputType() | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT; 
} 
mEditText.setInputType(inputType); 

Tenga en cuenta, sólo estoy interesado en soluciones para la creación de este EditText en código - no a través de XML.

Editar

encontré nueva documentación sonido que describe TextKeyListener, sin embargo después de tratar de usar esto:

mEditText.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.CHARACTERS, true)); 

y el uso de la idea de @ farble1670 de utilizar setRawInputType, a fin de no afectar a la KeyListener s, todavía no hay cambios en el texto.

Respuesta

2

sí, parece que debería funcionar. Sin embargo, mirando a los documentos,

El tipo de datos que se coloca en un campo de texto, que se utiliza para ayudar a un método de entrada decidir cómo dejar que el usuario introduzca texto. Las constantes aquí corresponden a las definidas por InputType. En general, puede seleccionar un valor único de , aunque algunos pueden combinarse como se indica. Establecer este atributo en cualquier cosa además de ninguno también implica que el texto es editable.

http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType

por lo que parece, en general, no se puede esperar a poner dos valores.

también, si nos fijamos en android: setInputType, dice que esto se asigna al método setRawInputType(), no setInputType(). puede intentar llamar a setRawInputType() en lugar de setInputType().

http://developer.android.com/reference/android/widget/TextView.html#setRawInputType(int)

+0

Gracias, esto me llevó a una nueva dirección, y encontré el 'TextKeyListener'. Lo único es que eso tampoco parece funcionar ... – Phil

29

A través de XML sería configuración como tal.

android:inputType="textMultiLine|textNoSuggestions" 

Sólo tiene que añadir una tubería (|) entre las variables. Veo que lo estabas haciendo a través del código, pero solo estaba lanzando esto como referencia.

+1

mi pregunta dice específicamente que no estoy interesado en una solución 'XML'. – Phil

+2

Encontré su pregunta mientras buscaba, estaba colocando la solución XML para la siguiente persona que encuentra esto pero estaba buscando una solución XML como yo ... – f1vefour

6

Espero que haya encontrado una respuesta a la pregunta. La respuesta podría ayudar a aquellos que vengan al hilo más tarde. Por lo tanto, puede establecer varias etiquetas de manera similar a como lo hace en XML utilizando un | (tubería). Algo así como:

EditText mEditText = new EditText(this); 
mEditText.setInputType(InputTpe.TYPE_TEXT_FLAG_CAP_CHARACTERS|InputType.TYPE_TEXT_FLAG_AUTO_CORRECT); 

También, dependiendo de su situation es posible que desee utilizar setInputType o setRawInputype.

+0

Esta es la solución correcta. – Tommie

Cuestiones relacionadas