He creado un diseño que contiene dos botones, Siguiente y Anterior. Entre los botones estoy generando algunas vistas dinámicas. Por lo tanto, cuando lance la aplicación por primera vez, quiero desactivar el botón "Anterior", ya que no habrá vistas anteriores. También quiero desactivar el botón "Siguiente" cuando no hay más vistas para mostrar. ¿Hay alguna forma de desactivar los botones?Cómo deshabilitar un botón de Android?
Respuesta
¿Usted intentó esto?
myButton.setEnabled(false);
Actualización: Gracias a Gwen. Casi se olvidó de que android:clickable
se puede establecer en su diseño XML para determinar si se puede hacer clic en un botón o no.
No puede habilitarlo o deshabilitarlo en su XML (ya que su diseño se establece en tiempo de ejecución), pero puede establecer si se puede hacer clic en el inicio de la actividad con android:clickable
.
¡5 años de experiencia en Android y conozco esto AHORA! :/ – Sagar
que acaba de escribir una sola línea de código en su actividad
Button btn = (Button) findViewById(R.id.button1);
btn.setEnabled(false);
Cuando desea habilitar el mismo botón acaba de escribir
Button btn = (Button) findViewById(R.id.button1);
btn.setEnabled(true);
Eso es ** 2 ** líneas. Este es uno. '((Button) findViewById (R.id.mybutton)). SetEnabled (false);' –
Trate de entender los sentimientos Matt ...;) –
En mi caso,
myButton.setEnabled(false);
myButton.setEnabled(true);
funciona bien y está habilitando y deshabilitando el botón como debería. Pero una vez que el estado del botón se desactiva, nunca vuelve al estado habilitado nuevamente, aunque se puede hacer clic en él. Intenté invalidar y actualizar el estado dibujable, pero no tuve suerte.
myButton.invalidate();
myButton.refreshDrawableState();
Si usted o cualquier persona que tenga un problema similar, lo que funciona para mí está fijando el dibujable fondo nuevo. Funciona en cualquier nivel de API.
myButton.setEnabled(true);
myButton.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.myButtonDrawable));
En Java, una vez que tenga la referencia del botón:
Button button = (Button) findviewById(R.id.button);
Para activar/desactivar el botón, puede utilizar cualquiera:
button.setEnabled(false);
button.setEnabled(true);
O:
button.setClickable(false);
button.setClickable(true);
Como desea desactivar el botón de t El comienzo, puede usar button.setEnabled (false); en el método onCreate. De lo contrario, a partir de XML, puede utilizar directamente:
android:clickable = "false"
Así:
<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/button_text"
android:clickable = "false" />
respondió 8 de diciembre de 2010 a las 7:08 Varun –
@Poldie: En realidad, si Si lee las dos respuestas, comprenderá que son bastante similares pero no iguales. –
por primera vez en XML que el botón como android:clickable="false"
<Button
android:id="@+id/btn_send"
android:clickable="false"/>
entonces en su código, en el interior oncreate()
método establecer la propiedad del botón como
btn.setClickable(true);
continuación, haga clic en el botón dentro de cambiar el código en
btn.setClickable(false);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnSend = (Button) findViewById(R.id.btn_send);
btnSend.setClickable(true);
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnSend.setClickable(false);
}
});
}
Sí, se puede desactivar en XML simplemente usando <Button android:enabled="false" />
Esta es la respuesta real para xml. Todas esas tonterías de jugar con clics no tienen nada que ver con cómo se dibuja el botón para que parezca deshabilitado. –
MAL CAMINO EN OYENTE DE USO variable en lugar del parámetro !!!
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnSend.setClickable(false);
}
});
manera correcta:
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/** check given view by assertion or cast as u wish */
if(v instance of Button) {
/** cast */
Button button = (Button) v;
/** we can perform some check up */
if(button.getId() == EXPECTED_ID) {
/** disable view */
button.setEnabled(false)
button.setClickable(false);
}
} else {
/** you can for example find desired view by root view */
Button bt = (Button) v.getRootView().findViewById(R.id.btId);
/*check for button */
if(bt!=null) {
/** disable button view */
...
} else {
/** according to @jeroen-bollen remark
* we made assumption that we expected a view
* of type button here in other any case
*/
throw new IllegalArgumentException("Wrong argument: " +
"View passed to method is not a Button type!");
}
}
}
});
EDIT: En respuesta a @ Jeroen-Bollen
View.OnClickListener
se definición de interfaz para una devolución de llamada que se invoca cuando se hace clic en una vista.
con la definición método
void onClick(View v);
cuando la vista se hace clic en el objeto vista de clase hace devolución de llamada al método onClick() enviando como parámetro en sí, así que la vista nula parámetro no debería ocurrir si lo hace es un error de aserción que podría ocurrir, por ejemplo, cuando la clase objeto View fue destruido en su parte (por ejemplo, recogida por GC) o el método fue manipulado por piratear
poco sobre instanceof & nula
JLS/15.20.2. Tipo de comparación Operador instanceof
En tiempo de ejecución, el resultado del operador instanceof es cierto si el valor de la RelationalExpression no es nulo y la referencia podría ser arrojado a la ReferenceType sin levantar un ClassCastException.
De lo contrario, el resultado es falso.
tres palabras del Autor
SI U preguntar por qué?
SOBRE TODO PARA EVITAR NullPointerException
poco más código ahorrará su tiempo en la tarde de seguimiento de errores en el código & reduce la aparición de abnomalies.
considere el siguiente ejemplo:
View.OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
btnSend.setClickable(false);
}
});
btnSend.setOnClickListener(listener)
btnCancel.setOnClickListener(listener)
Parece que cada vez que se llamará a la expresión else, el código ya tiene errores. Esperabas un Botón, pero se pasó algo más. Usted * debe * lanzar una excepción cuando 'v' no es un' Botón'. –
@JeroenBollen buen punto que hice editar – ceph3us
No es exactamente lo que quise decir, pero una mejora, no obstante. –
En Kotlin, si se hace referencia en el botón Ver con id a continuación, el botón/Desactivar como como
layout.xml
<Button
android:id="@+id/btn_start"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="@string/start"
android:layout_alignParentBottom="true"/>
permitir
activity.kt
btn_start.isEnabled = true //to enable button
btn_start.isEnabled = false //to disable button
- 1. botón de deshabilitar con fondo personalizado android
- 2. Cómo deshabilitar un botón más elegante
- 3. cómo deshabilitar/habilitar un botón por jquery
- 4. Cómo deshabilitar el botón "Siguiente" en un teclado de software EditText (reemplace con el botón "Hecho")
- 5. Botón Deshabilitar en WPF?
- 6. Datagridview, deshabilitar botón/fila
- 7. Deshabilitar botón de bloqueo de pantalla (encendido) en Android
- 8. android: deshabilitar la barra de acciones botón de inicio
- 9. Deshabilitar botón de inicio en Android ICS (4.0)
- 10. Cómo deshabilitar el botón, haga clic en?
- 11. Cómo deshabilitar el botón de impresión QLPreviewController
- 12. ¿Cómo deshabilitar completamente el botón de enlace?
- 13. cómo deshabilitar botón de enviar con jQuery
- 14. NSUndoManager y habilitar/deshabilitar un botón deshacer
- 15. ¿Cómo atenuar/deshabilitar un control de botón en Win Forms?
- 16. ¿Cómo deshabilitar el botón en UIActionSheet?
- 17. Cómo deshabilitar el botón minimizar en C#?
- 18. ASP.NET ¿Cómo deshabilitar el botón al enviar?
- 19. Cómo deshabilitar un botón después del primer clic
- 20. ¿Puedo deshabilitar el botón 'cerrar' de un formulario usando C#?
- 21. Android: ¿cómo centrar un botón programáticamente creado?
- 22. ¿Cómo agregar un botón en Android?
- 23. Android - Escuchar un botón desactivado
- 24. Cómo deshabilitar el botón derecho de la barra de navegación
- 25. ¿Cómo deshabilitar el botón de cerrar en C?
- 26. ¿Cómo deshabilitar el botón de inicio sin usar TYPE_KEYGUARD?
- 27. Android deshabilitar elementos listview
- 28. Cómo implementar un botón en un widget de Android
- 29. Botón Deshabilitar en el envío del formulario
- 30. Deshabilitar el botón Atrás en el navegador
Sin equivalente XML :-( – Blundell
el equivalente es android: habilitado en xml. – Namratha
¿Y dónde lo encontraste en la documentación? ¿Puedes vincularlo aquí? – Varun