我有 2 个按钮,我需要在现在按下第一个按钮时从第二个按钮读取 onClick 事件,并且 vv Like 在键盘中。怎么做?
- 编辑
不,不!我不需要检查是否单击了第一个按钮。当第一个或第二个按钮处于 ACTION_DOWN 状态时,我需要监听另一个 onClick 事件,因为如果我按下第一个按钮,我不能按第二个,但我有多点触控。
我有 2 个按钮,我需要在现在按下第一个按钮时从第二个按钮读取 onClick 事件,并且 vv Like 在键盘中。怎么做?
不,不!我不需要检查是否单击了第一个按钮。当第一个或第二个按钮处于 ACTION_DOWN 状态时,我需要监听另一个 onClick 事件,因为如果我按下第一个按钮,我不能按第二个,但我有多点触控。
可能是您可以尝试以下代码:
在类中声明一个布尔变量。
private boolean button1IsPressed = false;
为按钮 1 编写以下代码:
button1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
button1IsPressed=true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
button1IsPressed=false;
}
}
};
对于按钮 2,您可以执行以下操作:
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(button1IsPressed){
//Write your to do code here
}
}
});
在 android-16/ApiDemos 项目中有一个示例代码,名为“Views -> Splitting Touches across Views”(SplitTouchView.java)。在该示例中,包含一个允许同时滚动两个列表视图LinearLayout
的属性。android:splitMotionEvents="true"
根据Android 3.0 API Overview这个属性出现在这个 api 版本中:
以前,一次只有一个视图可以接受触摸事件。Android 3.0 增加了对跨视图甚至窗口拆分触摸事件的支持,因此不同的视图可以同时接受触摸事件。
您可以尝试使用onTouchListeners
. 在第一个按钮中修改一个关于 down 和 up 事件的布尔值,在第二个按钮中,只在布尔值为 true 时执行一个动作。
如果按钮是切换按钮,我认为是这样的:
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();
if (on) {
// Do something
} else {
// Disable vibrate
}
}
这里最主要的是isChecked()函数,在检查哪一个被检查的时候可能会用到它,然后执行一些东西。您可以在两个按钮的 XML 中设置以下内容:
android:onClick="onToggleClicked"
然后用 isChecked 确定检查哪一个,如下所示:
boolean on1 = ((ToggleButton) view1).isChecked();
boolean on2 = ((ToggleButton) view2).isChecked();
if (on1)
//do something with button2
if (on2)
//do something with button1
干杯