Reputation: 5083
I have 2 buttons. This is what I am doing:
I set touch listeners for 2 buttons. It is logging touch events for both buttons:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("ButtonTouchTag", "Button 1: DOWN");
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
Log.d("ButtonTouchTag", "Button 1: MOVE");
} else if (event.getAction() == MotionEvent.ACTION_UP) {
Log.d("ButtonTouchTag", "Button 1: UP");
}
return true;
}
});
button2.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("ButtonTouchTag", "Button 2: DOWN");
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
Log.d("ButtonTouchTag", "Button 2: MOVE");
} else if (event.getAction() == MotionEvent.ACTION_UP) {
Log.d("ButtonTouchTag", "Button 2: UP");
}
return false;
}
});
}
}
This code logs following information:
As you can see, button 2 is not getting touch event.
Question: how to press on first button, release on second button and get touch events on second button?
Upvotes: 1
Views: 369
Reputation: 504
button2.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("ButtonTouchTag", "Button 2: DOWN");
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
Log.d("ButtonTouchTag", "Button 2: MOVE");
} else if (event.getAction() == MotionEvent.ACTION_UP) {
Log.d("ButtonTouchTag", "Button 2: UP");
}
return true;
}
});
it should return true.
Upvotes: 0