按下时孔线性/相对布局



我一直在寻找这个,但是我没有找到。我已经有一个 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);

最新更新