2015-04-26 4 views
-2

Я пытаюсь создать динамические кнопки. Когда нажимается кнопка, цвет кнопки меняется на красный. Когда нажимается другая, цвет предыдущей кнопки должен быть сброшен до цвета по умолчанию.динамическая кнопка Android с 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); 

       } 

      }); 

     } 

Как я могу получить идентификатор кнопки без клика?

ответ

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

Добавить инвентарь onClickListener Вашей деятельности и установить этот приемник для вас кнопки в течение цикла, как

valueB.setOnClickListener(this); 

И Переопределить метод OnClick, где вы получите идентификатор кнопки

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

После того, как вы получите идентификатор кнопки вы можете изменить цвет текста

Смежные вопросы