Activar botón al escribir texto en editText android
Tengo un diseño donde tengo algunos edittexts y un botón. Este botón es setEnabled (false). ¿Cómo puedo cambiar su estado cuando el usuario escribe algún texto en edittext? Quiero que cuando el usuario poner algún texto para editar el botón de texto setEnabled en true?
- Cuadro de diálogo de alerta de Appcompat Fondo del botón de acción En estado presionado
- Uso del comportamiento personalizado para crear múltiples "puntos de anclaje" / posiciones para CollapsingToolbar
- La barra de herramientas de la ocultación de AppBarLayout se oculta
- Botón de acción de teclado suave de Android
- Cambio de color con LinearLayout y TextView en Java (Android)
- ¿Cuál es la forma correcta de admitir diferentes tamaños de tabletas?
- ¿Puede la carpeta Diseño de Android contener subcarpetas?
- Cómo crear botones como Android Google Plus App
- Adaptar el diseño a la plataforma o nivel API de Android
- Las versiones más recientes de Android Studio y sólo dos dibujable directorio - dibujable y drawable-v21
- SwipeRefreshLayout - desliza el dedo hacia abajo para actualizar pero no mueve la vista hacia abajo
- Cómo cambiar el color del puntero de EditText (no el cursor)
- Cambia dinámicamente los valores de colors.xml para cambiar la apariencia de la aplicación android
Necesitas usar TextWatcher
:
editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } });
Es una buena idea también notificar al usuario por qué el botón está deshabilitado.
Utilice un TextWatcher
para desactivar / habilitar el botón y también establecer una sugerencia de error para EditText:
mEditText.addTextChangedListener(new EmptyValidator());
private class EmptyValidator implements TextWatcher { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { if (editable.length() == 0) { mEditText.setError("Required"); mButton.setEnabled(false); } else { mEditText.setError(null); mButton.setEnabled(true); } } }
Usted necesita comprobar hacia fuera la longitud actual de edittext y que usted consigue de TextWatcher si la longitud mínima one (1) de su EditText o no null entonces setEnabled (verdad); else defecto false.
cheque acondicionado:
editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub if(edt.getText().toString().length()<=0) { edt.setError("Required."); btn.setEnable(true); } else { btn.setEnable(true); } } });
Con respecto a su código y requisito, el siguiente código debería funcionar bien:
mEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} @Override public void afterTextChanged(Editable string) { if(string.length() > 0) { mButton.setEnabled(true); } else { mButton.setEnabled(false); } } });
- Android: Toast de IntentService permanece en pantalla para siempre
- Problema con URI matcher en Android