我一直在寻找这个,但是我没有找到。我已经有一个 OnTouchListener
变量,可以使按钮效果很好,但是我想使其在布局上工作。
这是我的OnTouchListener
public static OnTouchListener buttonTinter = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent me) {
synchronized (lock) {
if (me.getAction() == MotionEvent.ACTION_DOWN) {
Drawable d = v.getBackground();
if (d != null) {
d.setColorFilter(Color.argb(255, 155, 155, 155),
PorterDuff.Mode.DARKEN);
}
return false;
} else if (me.getAction() == MotionEvent.ACTION_UP
|| me.getAction() == MotionEvent.ACTION_CANCEL) {
Drawable d = v.getBackground();
if (d != null) {
d.setColorFilter(Color.argb(255, 255, 255, 255),
PorterDuff.Mode.MULTIPLY);
}
if (SystemClock.elapsedRealtime() - mLastClickTime < 300) {
return true;
}
mLastClickTime = SystemClock.elapsedRealtime();
return false;
}
return false;
}
}
};
synchronized
和时间零件只是为了避免同时触摸2个按钮的错误。因此,它可以在按钮或imageButtons中完美工作,但是当我将其设置为RelativElayouts或linearlayouts时,什么也不会发生(没有错误,它只是忽略代码)。有人有建议吗?
解决方案:
布局的背景必须是可绘制的,而不是颜色
您是否使布局'可点击'?
myLinearLayoutName.setClickable(true);
myRelativeLayoutName.setClickable(true);