(Android 3.2)我有一个带有9个按钮的TableLayout。我想知道什么时候没有按下它们,即当按下完成时,即ACTION_UP。我不关心哪个按钮,我只想知道任何按下的按钮刚刚被释放。
我希望XML中有一个 Android :: onTouch ,就像有一个Android :: onClick,我可以将它们全部指向一个onTouch事件处理程序来查找ACTION_UP。但事实并非如此。我试图避免编写9个单独的OnTouchListener。
有什么建议吗?
提前致谢。
答案 0 :(得分:2)
为什么不从代码中添加onTouchListener,实际上,当你有ACTION_UP时,你要做你想做的事情,如here
答案 1 :(得分:2)
为什么不创建一个监听器:
OnTouchListener listener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Button b = (Button) v; // the button that just gets released
if (event.getAction() == MotionEvent.ACTION_UP) {
...
}
}
});
并使用循环附加到所有按钮:
Button buttons[] = {...};
for (Button b : buttons) {
b.setOnTouchListener(listener);
}
或者:
int button_ids[] = {R.id.button1, R.id.button2, R.id.button3, ...};
for (int id : button_ids) {
((Button) findViewById(id)).setOnTouchListener(listener);
}
答案 2 :(得分:2)
您可以以编程方式而不是XML中的方式将每个视图分配给单个onTouch侦听器。
建立一个听众:
private View.OnTouchListener myListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// Your logic
return false;
}
};
然后将其添加到每个按钮。
findViewById(R.id.btn1).setOnTouchListner(myListener);
findViewById(R.id.btn2).setOnTouchListner(myListener);
最理想的是,您可以以编程方式创建这些按钮,而不是从xml引用它们,这样您就可以在循环中执行此操作,或者可能将它们放在一个ViewGroup中并迭代其子项并以这种方式添加侦听器。