按下时调整孔线性/相对布局

时间:2014-01-20 19:59:34

标签: android layout tint

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

布局的背景必须是可绘制的,而不是颜色

1 个答案:

答案 0 :(得分:0)

您的布局是否“可点击”?

myLinearLayoutName.setClickable(true);
myRelativeLayoutName.setClickable(true);