我有一个switch
按钮(实际上是一个自定义的按钮),我想禁用滑动功能出于某种原因;我希望用户只能点击它。有没有办法做到这一点? 谢谢。开关按钮 - 禁用滑动功能
回答
您可以将setClickClick(false)设置为Switch,然后侦听Switch的父节点中的onClick()事件并以编程方式切换它。开关仍然显示为启用,但滑动动画不会发生。
...
[中的onCreate()]
Switch _Switch_Internet = (Switch) findViewById(R.id.m_switch_internet);
_Switch_Internet.setClickable(false);
...
[点击收听]
public void ParentLayoutClicked(View _v){
Switch _Switch_Internet = (Switch) findViewById(R.id.m_switch_internet);
if(_Switch_Internet.isChecked()){
_Switch_Internet.setChecked(false);
}
else{
_Switch_Internet.setChecked(true);
}
}
...
[ layout.xml]
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="ParentLayoutClicked"
android:focusable="false"
android:orientation="horizontal"
>
<Switch
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:id="@+id/m_switch_internet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="NOT CONNECTED"
android:textOn="CONNECTED"
android:focusable="false"
android:layout_alignParentRight="true"
android:text="@string/s_internet_status" />
</RelativeLayout>
要禁用交换机使用以下方法
switchBtn.setEnabled(false);
为了使开关不能点击使用
switchBtn.setClickable(false);
其中switchBtn是开关对象
它不起作用。首先因为点击事件后我们switchBtn.setEnabled(false)不会出现。其次,对于残疾人观点,我们有不同的资源。 – Sinigami
一种更好的方式是,以防止从接收MotionEvent.ACTION_MOVE
事件切换课程。
switchButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return event.getActionMasked() == MotionEvent.ACTION_MOVE;
}
});
然后你可以自由设定一个点击监听交换机作为适当的:
这是可以做到的。
查看implementation of Switch了解拖动的工作原理。它太酷了!
它不起作用。点击事件不会出现。开关仍然在滑动。 – Sinigami
另外尝试'setClickable(false)'并实现'setOnTouchListener' –
我的解决办法是:
switchView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
//Your code
}
return true;
}
});
或者ButterKnife:
@OnTouch(R.id.switchView)
public boolean switchStatus(Switch switchView, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
// your code
}
return true;
}
您可以自定义扩展交换机,然后覆盖其的onTouchEvent()视图
@Override
public boolean onTouchEvent(MotionEvent ev) {
boolean handle = ev.getActionMasked() == MotionEvent.ACTION_MOVE;
return handle ? handle : super.onTouchEvent(ev);
}
它应该工作。
//此代码工作正常
公共类MainActivity扩展AppCompatActivity实现CompoundButton.OnCheckedChangeListener { 开关my_switch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
my_switch = (Switch) findViewById(R.id.my_switch);
my_switch.setOnCheckedChangeListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.my_switch:
if(my_switch.isChecked())
my_switch.setChecked(true);
else
my_switch.setChecked(true);
break;
}
}
}
- 1. iPad禁用开/关按钮
- 2. 禁用功能区按钮
- 3. 功能“按钮被禁用”
- 4. 禁用功能区按钮
- 5. 禁用按钮的功能
- 6. SlidingPanelLayout:禁用并启用滑动功能
- 7. 滑块按钮功能
- 8. Arduino按钮开启和关闭功能
- 9. android:XML开关按钮,但不是功能
- 10. Android - 开关按钮只能通过滑动改变状态
- 11. 开关类和禁用按钮
- 12. 禁用按钮功能(Wx Widgets)
- 13. ASP.NET禁用按钮并运行功能
- 14. ASP禁用按钮和运行功能
- 15. 自我禁用按钮,辅助功能
- 16. 点击后禁用按钮功能
- 17. 带开关按钮的开关和外壳功能
- 18. 启用/禁用基于单选按钮的功能按钮
- 19. 禁用/启用MFC功能包的功能区按钮
- 20. 延迟/暂停滑动滑动功能
- 21. 使用cocos2d-x切换菜单项(滑动(开/关)按钮)
- 22. 滑动动画开始点击按钮
- 23. 功能启用和禁用动态按钮(FileSystemWatcher)
- 24. 禁用滑动关闭AVPlayerController
- 25. 暂时禁用手势识别器滑动功能
- 26. 带有禁用功能的Bootstrap不可视化禁用按钮
- 27. jQuery滑动功能
- 28. DockPanel禁用关闭按钮
- 29. 禁用Bootbox关闭按钮
- 30. Form.GotFocus禁用关闭按钮
可以帮这样的:-http://计算器。com/questions/11753355 /在doubletap和swipe之间切换 –
swipes(他们被称为FLING EVENTS) - 我不知道...我会在一分钟内尝试这个 – Paul