我有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;
}
};
现在的问题是,当我触摸一个按钮时,第二个按钮也会突出显示?为什么这么错呢?
答案 0 :(得分: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;
}
});
编辑:我使用了上面的代码。它工作正常。当触摸的按下颜色的按钮变为蓝色时,向上变为绿色。
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
使用编辑或匿名内部类中的代码
On Touch Down
在释放按钮背景上将再次显示绿色
答案 1 :(得分:0)
使用此
setBackgroundResource(R.color.rojo);
你也可以使用字符串来定义颜色,但它应该在资源中定义。