Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:批量启用/禁用按钮_Android_Button_Tablelayout - Fatal编程技术网

Android:批量启用/禁用按钮

Android:批量启用/禁用按钮,android,button,tablelayout,Android,Button,Tablelayout,我有一个活动,在TableLayout中放置了一堆按钮,这和拨号板没什么两样。在某些操作中,我需要暂时禁用按钮。令我不快的是,执行TableLayout.setEnabled(false)对嵌套按钮没有影响。我是不是一直在设置每个按钮,还是有更好的方法来达到同样的效果 我认为您必须将每个按钮设置为停用。为了让它看起来更好一点,你可以把所有的按钮放在一个列表中,并在激活和停用期间对它们进行迭代。但这不会阻止您在代码中一次性找到它们。我会尝试这样做: TableLayout tableLayoutI

我有一个活动,在TableLayout中放置了一堆按钮,这和拨号板没什么两样。在某些操作中,我需要暂时禁用按钮。令我不快的是,执行
TableLayout.setEnabled(false)
对嵌套按钮没有影响。我是不是一直在设置每个按钮,还是有更好的方法来达到同样的效果

我认为您必须将每个按钮设置为停用。为了让它看起来更好一点,你可以把所有的按钮放在一个列表中,并在激活和停用期间对它们进行迭代。但这不会阻止您在代码中一次性找到它们。

我会尝试这样做:

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);
}
TableLayout tableLayoutInstance;//我们假设您已经初始化了它
//喋喋不休
//禁用所有按钮的示例
ArrayList touchables=tableLayoutInstance.getTouchables();
用于(可触摸视图:可触摸){
if(可触摸instanceof按钮)
((按钮)可触摸)。设置启用(错误);
}

由于按钮嵌套在TableLayout下,因此应该很容易迭代子项并设置每个子项。我不知道是否有更简单的方法。

至少我可以创建一个自定义按钮,用于侦听特定事件并基于此启用/禁用。在我走那条路之前,我只是想偷懒:)不理想,但在我的情况下是可以接受的(而且足够短)。谢谢((按钮)可触摸)。设置启用(错误);