带有setOnClickListener的android动态按钮

时间:2015-04-26 11:43:29

标签: java android button

我尝试创建动态按钮。单击按钮时,按钮的颜色将变为红色。单击另一个按钮时,应将上一个按钮的颜色重置为默认颜色。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout linear;
        linear = (LinearLayout) findViewById(R.id.ly);

        for (i = 1; i < 4; i++) {
            final Button btn = new Button(this);

            btn.setId(1000 + i);

            btn.setBackgroundColor(Color.BLUE);
            btn.setMinimumHeight(150);
            btn.setMinimumWidth(150);
            linear.addView(btn);

            btn.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {

                    btn.setBackgroundColor(Color.RED);

                }

            });

        }

如何获取未点击按钮的ID?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

ArrayList<Button> mButtonList = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout linear;
    linear = (LinearLayout) findViewById(R.id.ly);

    for (int i = 1; i < 4; i++) {
        final Button btn = new Button(this);

        btn.setId(1000 + i);
        btn.setBackgroundColor(Color.BLUE);
        btn.setMinimumHeight(150);
        btn.setMinimumWidth(150);
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                for (Button button : mButtonList) {
                    if (button.getId() == view.getId()) {
                        button.setBackgroundColor(Color.RED);
                    } else {
                        button.setBackgroundColor(Color.BLUE);
                    }
                }
            }
        });

        linear.addView(btn);
        mButtonList.add(btn);
    }
}

答案 1 :(得分:0)

将实现onClickListener添加到您的Activity并将此侦听器设置为for按钮in for loop like

valueB.setOnClickListener(this);

并覆盖onClick方法,获取按钮ID

@Override
public void onClick(View v) {
    Toast.makeText(getApplicationContext(), "" + v.getId(), 800).show();
}

获得按钮ID后,您可以更改文字颜色