0

我有 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);

现在这是我的 onTouch :

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

现在的问题是当我触摸一个按钮时,第二个按钮也会突出显示?为什么这里有什么问题?

4

2 回答 2

0

使用匿名内部类,如下所示

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

    });

编辑:我使用了上面的代码。它工作正常。每当触摸时,ondown 颜色变为蓝色,on up 变为绿色。

            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

在编辑或匿名内部类中使用代码

在此处输入图像描述

触地时

在此处输入图像描述

释放按钮背景将再次变为绿色

于 2013-05-08T17:59:06.583 回答
0

用这个

setBackgroundResource(R.color.rojo);

您也可以使用字符串来定义颜色,但它应该在资源中定义。

于 2013-05-09T06:07:57.363 回答