我想要使用switch button,但我希望在点击时禁用更改状态,让此更改仅适用于拖动选项。我试图设置onclick
监听器什么也不做,但是当我点击按钮时总是改变状态。切换按钮,禁用更改状态onClick
有人知道禁用更改状态onClick
?使用的
我想要使用switch button,但我希望在点击时禁用更改状态,让此更改仅适用于拖动选项。我试图设置onclick
监听器什么也不做,但是当我点击按钮时总是改变状态。切换按钮,禁用更改状态onClick
有人知道禁用更改状态onClick
?使用的
Toggle Button代替在java类
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
} else {
// The toggle is disabled
}
}
});
//onClickListener
public void tglOnClick(View v) {
ToggleButton tgl = (ToggleButton) v;
//do something based on toggle status after clicking
if (tgl.isChecked())
//do something
else
//do something else
//revert button state so that it can be controlled by some external logic
tgl.setChecked(!tgl.isChecked());
}
这Button
XML用于切换按钮
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
为我工作。在我的情况下,点击切换按钮向服务发送请求,如果服务回复“OK”,则消息处理器设置切换按钮的正确状态。
使用开关部件,你将不得不创建customSwitch类并覆盖的onTouchEvent方法返回true,当你发现一个点击:
public boolean onTouchEvent(MotionEvent ev) {
boolean response;
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
x = ev.getX();
response = super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
response = Math.abs(x - ev.getX()) <= 10 || super.onTouchEvent(ev);
break;
default:
response = super.onTouchEvent(ev);
break;
}
return response;
}
数字10是一个公差值,因为一些设备报告运动事件3或6像素左右,而不是点击,所以这个你控制:10像素或更少的点击(并忽略它)或更多的距离被认为是运动,让这个运动通过正常开关行为。
如果你想只刷卡更改执行以下操作开关的状态:
switchbutton = view.findViewById(R.id.switch2);
switchbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switchbutton.setChecked(!switchbutton.isChecked());
}
});
使用button.setClickable(假) –
但是,如果我setclickable(假)我不能拖开关 – bott
你可以使用onTouch事件拖动... –