2010-07-08 19 views
6

Tengo una actividad en la que se colocan varios botones dentro de TableLayout, a diferencia de un teclado de marcación. Durante algunas operaciones necesito desactivar temporalmente los botones. Para mi desagradable sorpresa, hacer TableLayout.setEnabled(false) no tiene ningún efecto sobre los botones anidados. ¿Estoy atascado con la configuración de cada botón individual o hay una forma ingeniosa (mejor) de lograr lo mismo?Android: botones de habilitar/deshabilitar en masa

Respuesta

9

que iba a tratar de hacer algo como esto:

TableLayout tableLayoutInstance; // let's suppouse you have already initialized it 
// blablabla 
// example to deactivate all buttons 
ArrayList<View> touchables = tableLayoutInstance.getTouchables(); 
for(View touchable : touchables){ 
    if(touchable instanceof Button) 
     ((Button)touchable).setEnabled(false); 
} 
+0

No es ideal, pero aceptable en mis circunstancias (y lo suficientemente corto). ¡Gracias! – Bostone

+0

((Botón) táctil) .setEnabled (falso); –

1

Creo que tiene que configurar cada uno de estos botones para desactivarlos. Para que se vea un poco mejor, podría poner todos los botones en una lista e iterar sobre ellos durante la activación y desactivación. Pero esto no evitará que los encuentres todos una vez en tu código.

+0

Por lo menos puedo crear un botón personalizado que escuche un determinado evento y habilite/deshabilite en función de eso. Solo estoy tratando de ser perezoso antes de ir por esa ruta :) – Bostone

0

ya que los botones están anidados bajo un TableLayout, que debe ser fácil para iterar sobre los niños y establecer cada uno. No sé si hay una manera más fácil.

Cuestiones relacionadas