2015-04-26 89 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您可以更改文字顏色