【问题标题】:How to disable swipe in switch compat? [duplicate]如何禁用切换兼容中的滑动? [复制]
【发布时间】:2018-02-15 06:56:33
【问题描述】:

我需要在开关兼容中禁用滑动。我正在使用 OnclickListener 来切换开关。我已经为 onClickListener 实现了一些功能。但是当用户滑动切换时,他没有得到实现的功能。我需要禁用滑动切换兼容。

注意:我没有使用 onCheckedListener,因为我在使用 onCheckedListener 时遇到了一些问题。

<android.support.v7.widget.SwitchCompat
    android:id="@+id/switchButton"
    android:layout_width="wrap_content"
    android:layout_centerInParent="true"
    android:checked="false"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Switch example"
    />

SwitchCompat switchCompat;
switchCompat=(SwitchCompat)findViewById(R.id.switchButton);
     switchCompat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(), "toggled", Toast.LENGTH_SHORT).show(); //added
        }
    });

【问题讨论】:

  • @Aks4125 :那个解决方案对我没有帮助
  • 那么您应该在有关研究的问题中提及。正如您在下面看到的 AJ 的回答与同一篇文章中的相同。 :)
  • 接受的答案在重复问题中可用。我在这里说是因为你说这个问题没有解决你的问题.. stackoverflow.com/a/21126040/4647628

标签: android android-layout android-button


【解决方案1】:

尝试通过使用以下代码来阻止开关类接收滑动事件:

switchBtn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return event.getActionMasked() == MotionEvent.ACTION_MOVE;
    }
});

这可能会阻止开关接收滑动

【讨论】:

  • 感谢它的魅力
  • 谢谢,我想对 OnClick 执行操作,而不是 OnCheckChanged。它对我有用。
【解决方案2】:

使用TouchListener

switchButton.setOnTouchListener(object : View.OnTouchListener {
            override fun onTouch(p0: View, p1: MotionEvent): Boolean {
                when (p1.action) {
                    MotionEvent.ACTION_DOWN -> {
                        return false
                    }
                    MotionEvent.ACTION_UP -> {
                        return false
                    }
                    MotionEvent.ACTION_MOVE -> {
                        return true
                    }
                    else -> {
                        return true
                    }
                }
            }
        })

现在你不能滑动开关

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多