2015-04-26 53 views
-2

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

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?

回答

1

您可以试试这个:

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); 
    } 
} 
0

在for循环您按钮添加工具onClickListener到你的活动,并设置该监听像

valueB.setOnClickListener(this); 

,并重写的onClick方法你在哪里得到键ID

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

一旦你得到按钮的ID您可以更改文字颜色