2 つのボタンがあり、最初のボタンが押されたときに 2 番目のボタンから onClick イベントを読み取る必要があり、vv はキーボードのようです。どうやってするか?
- 編集
いいえ、いいえ!最初にボタンがクリックされたかどうかを確認する必要はありません。最初または 2 番目のボタンが ACTION_DOWN 状態のときに、別の onClick イベントをリッスンする必要があります。
2 つのボタンがあり、最初のボタンが押されたときに 2 番目のボタンから onClick イベントを読み取る必要があり、vv はキーボードのようです。どうやってするか?
いいえ、いいえ!最初にボタンがクリックされたかどうかを確認する必要はありません。最初または 2 番目のボタンが 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
}
}
});
ボタンがトグルボタンの場合、私が思うのは次の場合です。
public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();
if (on) {
// Do something
} else {
// Disable vibrate
}
}
ここでの主なものはisChecked()関数です。これは、どちらがチェックされているかをチェックするときに使用できるため、何かを実行します。2つのボタンの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
乾杯
android-16/ApiDemos プロジェクトに、「Views -> Splitting Touches across Views」(SplitTouchView.java) というサンプル コードがあります。そのサンプルでは、エンクロージングには、 2 つのリスト ビューを同時にスクロールできるLinearLayout
属性があります。android:splitMotionEvents="true"
Android 3.0 API の概要によると、この属性はこの API バージョンに表示されます。
以前は、一度に 1 つのビューだけがタッチ イベントを受け入れることができました。Android 3.0 では、タッチ イベントをビューやウィンドウに分割するサポートが追加されているため、異なるビューで同時にタッチ イベントを受け入れることができます。
で試すことができonTouchListeners
ます。最初のボタンでは、ダウン イベントとアップ イベントのブール値を変更し、2 番目のボタンでは、ブール値が true の場合にのみアクションを実行します。