我一直在寻找这个,但我没找到。我已经有一个OnTouchListener
变量,它对按钮着色并且效果很好,但是我想让它在Layouts上工作。
这是我的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个按钮的错误。因此,它在Buttons或ImageButtons中完美运行,但当我将其设置为RelativeLayouts或LinearLayouts时没有任何反应(没有错误,它只是忽略代码)。有没有人有任何建议?
SOLUTION:
布局的背景必须是可绘制的,而不是颜色
答案 0 :(得分:0)
您的布局是否“可点击”?
myLinearLayoutName.setClickable(true);
myRelativeLayoutName.setClickable(true);