I have an activity where a bunch of buttons are placed inside TableLayout, not unlike a dial pad. During some operations I need to temporarily disable the buttons. To my unpleasant surprise doing TableLayout.setEnabled(false)
has no effect on the nested buttons. Am I stuck with setting each individual button or is there a nifty (better) way to achieve the same?
Asked
Active
Viewed 9,676 times
6
3 Answers
9
I'd try to do something like this:
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);
}

Cristian
- 198,401
- 62
- 356
- 264
-
Not ideal but acceptable in my circumstances (and short enough). Thanks! – Bostone Jul 08 '10 at 23:40
-
((Button)touchable).setEnabled(false); – Cyril Jacquart Apr 27 '15 at 19:04
1
I think you have to set each individual of this Buttons to deactivated. To make it look a little bit nicer you could put all of the buttons in a list and iterate over them during activating and deactivating. But this will not prevent you from finding them all once in you code.

Janusz
- 187,060
- 113
- 301
- 369
-
At very least I can create a custom button which listens on certain event and enables/disables based on that. I'm just trying to be lazy before I go that route :) – Bostone Jul 08 '10 at 15:48
0
Since the buttons are nested under a TableLayout, it should be easy to iterate over the children and set each one. I don't know if there is an easier way.

Asker
- 173
- 1
- 9