2010-07-08 48 views
6

我有一个活动,其中一堆按钮放在TableLayout内,与拨号盘无异。在一些操作中,我需要暂时禁用这些按钮。令我不愉快的惊喜TableLayout.setEnabled(false)对嵌套按钮没有影响。我坚持设置每个单独的按钮还是有一个漂亮(更好)的方式来实现相同?Android:批量启用/禁用按钮

回答

9

我想尝试做这样的事情:

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

不理想但在我的情况下可以接受(并且足够短)。谢谢! – Bostone 2010-07-08 23:40:55

+0

((Button)touchable).setEnabled(false); – 2015-04-27 19:04:53

1

我想你必须设置这个按钮的每个人去激活。为了让它看起来更好一点,你可以把所有的按钮放在一个列表中,并在激活和停用期间遍历它们。但是这并不妨碍你在你的代码中找到它们。

+0

至少我可以创建一个自定义按钮,它监听某些事件并基于该按钮启用/禁用。我只是想在我走那条路线之前懒惰:) – Bostone 2010-07-08 15:48:46

0

由于按钮下TableLayout嵌套的,它应该很容易遍历儿童和设置每一项。我不知道是否有更简单的方法。