Android禁用所有按钮

时间:2012-03-18 00:08:17

标签: java android

我以编程方式创建按钮,具体取决于某些因素,它们将是3或4个按钮。

在某些情况下,我想创建所有按钮,但禁用所有按钮。目前我遇到的问题是我无法从此循环外部访问按钮

    if (4val != null && 4val.length() > 0){
        Button b4 = new Button(this);
        b4.setText(answer4val);
        b4.setTextSize(18);
        layout.addView(b4, layoutParams);
        b4.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                reason(4);
            }
        });
    }

我想禁用/启用这些if语句之外的所有按钮。这可能吗?

4 个答案:

答案 0 :(得分:0)

在更广泛的范围内声明它们(可能是类成员):

// in the class scope
Button b4 = null;

// in the method scope
if (4val != null && 4val.length() > 0){
    b4 = new Button(this);
    b4.setText(answer4val);
    b4.setTextSize(18);
    layout.addView(b4, layoutParams);
    b4.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            reason(4);
        }
    });
}

答案 1 :(得分:0)

不要在该循环中创建按钮。为类创建按钮字段,您可以在整个课程中访问它们。然后在该循​​环中初始化它们。

如果你只需要在一种方法中使用它们,你可以将它们放在方法的本地,而不是类的字段。

答案 2 :(得分:0)

当然,您可以将按钮保存在列表中并稍后在

上执行操作
ArrayList<Button> buttons = new ArrayList<Button>();

if (4val != null && 4val.length() > 0){
    Button b4 = new Button(this);
    b4.setText(answer4val);
    b4.setTextSize(18);
    layout.addView(b4, layoutParams);
    b4.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            reason(4);
        }
    });
    buttons.add(b4);
}

foreach(Button b : buttons) {
  b.setEnable(false);
}

答案 3 :(得分:0)

如果要禁用按钮,则有两种选项方法,具体取决于您要如何禁用它们:

 button.setClickable(false);
 button.setVisibility(int visibility);

第一个会使setOnCLickListener无用 第二个将参数Visibility设置为“visible”,“invisible”或“gone”

要在循环外禁用它们,您还必须先将它们初始化,然后添加

b4.setId(); 

将其添加到视图

之前