Это не обычно возможно;верхняя кнопка будет поглощать событие нажатия кнопки, а не передавать его тому, кто находится за ней.Не ясно, хотите ли вы получить это поведение или избежать его, тем не менее, вы можете форсировать его, распространяя событие вручную среди прослушивателей кликов.
Вот один из способов (есть несколько);Предположим, что 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 попадает в слушателя при первой кнопке, что затем вызывает событие click для второй кнопки.
Вот еще один способ, который будет работать(и может быть легко изменено для поддержки событий длинных нажатий):
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);