是否可以同时点击两个按钮,如果一个覆盖另一个按钮?

时间:2012-03-11 21:45:16

标签: android button click

很抱歉这个奇怪的问题,但是可以在android中同时点击两个按钮(有两个日志,"点击b1""点击b2" ),如果一个完全覆盖另一个?

2 个答案:

答案 0 :(得分:3)

这不是通常可能;顶部按钮将吸收按钮单击事件,而不会将其传递给后面的按钮。目前尚不清楚是否要获取此行为或避免此行为,但您可以通过在点击侦听器中手动传播事件来强制执行此操作。

这是一种方式(有一些);假设buttonOne位于buttonTwo:

之上
final Button buttonOne = (Button) findViewById(...);
final Button buttonTwo = (Button) findViewById(...);

buttonOne.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
       Log.d("ButtonTest", "ButtonOne clicked");
       buttonTwo.performClick();
    }
});

buttonTwo.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
       Log.d("ButtonTest", "ButtonTwo clicked");
    }
});

click事件在按钮1上进入侦听器,然后在按钮2上引发单击事件。

这是另一种可行的方法(可以更改为轻松支持长点击事件):

final Button buttonOne = (Button) findViewById(...);
final Button buttonTwo = (Button) findViewById(...);

final OnClickListener listenerTwo = new OnClickListener() {
    @Override
    public void onClick(View v) {
       Log.d("ButtonTest", "ButtonTwo clicked");
    }
};

final OnClickListener listenerOne = new OnClickListener() {
    @Override
    public void onClick(View v) {
       Log.d("ButtonTest", "ButtonOne clicked");
       listenerTwo.onClick(buttonTwo);
    }
};

buttonOne.setOnClickListener(listenerOne);
buttonTwo.setOnClickListener(listenerTwo);

答案 1 :(得分:0)

是的,有可能。您需要将前景视图上发生的单击事件传递给背景视图。您可以通过检查点击发生的位置以及它是否出现在视图的边界内来完成此操作。