目前我有一个调用方法的切换按钮,如果我按下它,togglebutton被禁用,代码运行并且按钮被重新启用,如果我再次按下它,同样的事情,再回到它;原始状态。我想改变它,以便当按下按钮时改变状态并运行代码,当我放开时,它会改变回来。我怎样才能做到这一点?我可以在这种方法中设置某种监听器,它是如何完成的?所以我在这个方法中设置clicklistener,在句柄按钮上,这里调用的按钮是什么,我是否必须给它一个名称来附加监听器?
public void pushtotalk3(final View view) {
//if more than one call, change this code
int callId = 0;
for (SipCallSession callInfo : callsInfo) {
callId = callInfo.getCallId();
}
final int id= callId;
final boolean on = ((ToggleButton) view).isChecked();
((ToggleButton) view).setEnabled(false);
new Thread(new Runnable() {
@Override
public void run() {
try {
if (on) {
OnDtmf(id, 17, 10);
Thread.sleep(10);
OnDtmf(id, 16, 9);
runOnUiThread(new Runnable() {
public void run() {
((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
((ToggleButton) view).setEnabled(true);
}
});
} else {
OnDtmf(id, 18, 11);
Thread.sleep(10);
OnDtmf(id, 18, 11);
runOnUiThread(new Runnable() {
public void run() {
((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
((ToggleButton) view).setEnabled(true);
}
});
}
} catch (InterruptedException e) {
Log.d(TAG, "Failed to send: " + e.getMessage());
}
}
}).start();
}
编辑:特别是我想知道如何在使用按钮的“方法版本”中执行此操作。 “而不是将OnClickListener应用于活动中的按钮,您可以使用android:onClick属性为XML布局中的按钮指定方法”
我是否将视图投射到togglebutton并使用它?
答案 0 :(得分:1)
试试这个:
ToggleButton yourBtn = (ToggleButton) findViewById(R.id.yourbtnid)
yourBtn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
//press
((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
((ToggleButton) view).setEnabled(true);
return true;
}
case MotionEvent.ACTION_UP: {
//release
((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
((ToggleButton) view).setEnabled(true);
return true;
}
default:
return false;
}
}
});
试试这个,如果你想用onClick方法调用,但我不承诺任何事情:
public void touchButton(View view) {
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
//press
((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
((ToggleButton) view).setEnabled(true);
return true;
}
case MotionEvent.ACTION_UP: {
//release
((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
((ToggleButton) view).setEnabled(true);
return true;
}
default:
return false;
}
}
});
}
并将其放入您的XML项目中:
android:onClick="touchButton"
答案 1 :(得分:1)
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
} else if (event.getAction() == MotionEvent.ACTION_UP) {
}
}
};
希望这会对你有所帮助