在Android中捕获按钮发布

时间:2010-09-24 05:46:20

标签: android button

在我们使用onClickListener()OnClick()捕获点击时,是否可以捕获按钮的发布?

我希望在按下按钮时增加按钮的大小,并在释放按钮时将其移回原始大小。任何人都可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:49)

您应该在按钮上设置OnTouchListener。

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            increaseSize();
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            resetSize();
        }
    }
};

答案 1 :(得分:3)

您还必须处理MotionEvent.ACTION_CANCEL。所以代码将是:

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP || 
            event.getAction() == MotionEvent.ACTION_CANCEL) {
            increaseSize();
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            resetSize();
        }
    }
};

答案 2 :(得分:2)

改为使用OnTouchListener或OnKeyListener。

答案 3 :(得分:1)

您可以通过覆盖onKeyDownonKeyUp来完成此操作。这些都是从android.widget.TextView继承而来的。有关(稍微)更多信息,请参阅android.widget.Button doc

答案 4 :(得分:0)

除了

之外,Eric Nordvik有正确的答案
event.getAction() == MotionEvent.ACTION_UP

从来没有为我执行过。相反,我确实实现了

    button.setOnClickListener(new OnClickListener() {
        @Override
        public boolean onClick(View v) {
            resetSize();      
    }
};

触摸ACTION_UP。