在运行时创建的按钮如何分别在clicklistener上进行设置?

时间:2019-07-19 10:11:13

标签: android xml button android-button

我正在基于给定的数组大小创建按钮。我的问题是,当按下一个按钮时,所有其他按钮如何更改其背景颜色,我该如何制作onclicklistener

例如:存在3个按钮。当按下button1时,按钮2和3更改其背景颜色。 这是我的代码:

for( j = 0; j < arrayName.length; j++) {
    //create the button
    final Button btn = new Button(this);

    //set all your button attributes, like text color,background color etc. here
    btn.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    btn.setText(arrayName[j]);
    btn.setId(j);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        Toast.makeText(ProductPage.this,btn.getText().toString(),Toast.LENGTH_SHORT).show();
        }
    });
    //add the button to your linear layout
    buttonLayout.addView(btn);
}

1 个答案:

答案 0 :(得分:1)

您可以实现以下目标

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

实现常见的onclick监听器

 @Override
public void onClick(View v) {

    for(int i = 0 ; i < buttonLayout.getChildCount() ; i++){
        View buton = buttonLayout.getChildAt(i);
        buton.setBackground();
    }
}

为所有按钮设置相同的侦听器

for (int j = 0; j < arrayName.length; j++) {
            //create the button
            final Button btn = new Button(this);

            //set all your button attributes, like text color,background color etc. here
            btn.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
            btn.setText(arrayName[j]);
            btn.setId(j);
            btn.setOnClickListener(this);
            //add the button to your linear layout
            buttonLayout.addView(btn);
        }