我有一個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