Подсветка кнопок - как применить onTouch к 2 кнопкам

У меня есть 2 кнопки, как это:

Button b = new Button(this);
        b.setText("Button onw");
        b.setId(1111);
        b.setBackgroundDrawable(R.drawable.button);
        b.setOnTouchListener(listenerOne);
        rootLayout.addView(b);

        Button b1 = new Button(this);
        b1.setText("Button two");
        b1.setBackgroundDrawable(R.drawable.button);
        b1.setOnTouchListener(listenerOne);
        RelativeLayout.LayoutParams i = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, UIUtils.convertDPToPixels(activity
            .getResources().getDisplayMetrics(), 45));
        i.addRule(RelativeLayout.BELOW, b.getId());
        rootLayout.addView(b1, i);

Теперь это мое прикосновение:

OnTouchListener listenerOne = new OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:

        view.getBackground().setColorFilter(Color.parseColor("#B7B2B0"), PorterDuff.Mode.MULTIPLY);
        view.invalidate();
        break;
        case MotionEvent.ACTION_CANCEL:
        view.getBackground().clearColorFilter();
        view.invalidate();
        break;
        case MotionEvent.ACTION_UP:
        view.getBackground().clearColorFilter();
        view.invalidate();
        break;
        }
        return false;
    }
    };

Теперь проблема в том, что когда я касаюсь одной кнопки, вторая кнопка также выделяется? почему так, что здесь не так?

2 ответа

Использовать этот

setBackgroundResource(R.color.rojo);

Вы можете использовать строку также, чтобы определить цвет, но он должен определить в ресурсе.

Используйте анонимный внутренний класс, как показано ниже

    b.setOnTouchListener(new OnTouchListener()
    {

    public boolean onTouch(View arg0, MotionEvent event) {
            // TODO Auto-generated method stub
    switch(event.getAction())
    {
        case MotionEvent.ACTION_DOWN:
             b.setBackgroundColor(Color.BLUE);
            break;
        case MotionEvent.ACTION_UP:
             b.setBackgroundColor(Color.GREEN);
            break;
        }

            return true;
    }

    });

Аналогично для кнопки b1

    b1.setOnTouchListener(new OnTouchListener()
    {

    public boolean onTouch(View arg0, MotionEvent event) {
            // TODO Auto-generated method stub
    switch(event.getAction())
    {
        case MotionEvent.ACTION_DOWN:
             b1.setBackgroundColor(Color.BLUE);
            break;
        case MotionEvent.ACTION_UP:
             b1.setBackgroundColor(Color.GREEN);
            break;
        }

            return true;
    }

    });

Изменить: я использовал вышеуказанный код. Работает нормально. Когда когда-либо кнопка в касании вниз цвет меняется на синий, а вверх меняется на зеленый.

            b1.setOnTouchListener(listenerOne);
    b.setOnTouchListener(listenerOne);        

И слушатель

             OnTouchListener listenerOne = new OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:

            view.setBackgroundColor(Color.BLUE);
            break;
        case MotionEvent.ACTION_UP:
             view.setBackgroundColor(Color.GREEN);


        break;
        }
        return false;
    }
    };          

Изменить 2:

          b.setBackgroundColor(Color.GREEN);//default background  color green
      b1.setBackgroundColor(Color.GREEN); // default background  color green

Используйте код в редактировании или анонимный внутренний класс

Прикосновение вниз

При отпускании кнопки фон снова станет зеленым

Другие вопросы по тегам