微调器禁用滑动以打开

时间:2015-12-03 16:29:21

标签: java android android-spinner

目前,当我从其位置执行滑动手势时,会打开一个微调器,允许我通过释放选择一个项目。

我想禁用它,因为它会干扰ScrollLayout和ViewPager中的滚动。旋转器只能在任何情况下通过单击而不是通过任何手势打开。

1 个答案:

答案 0 :(得分:2)

我遇到了这个问题,对我来说最快的解决方法是将Spinner扩展为类似以下内容。这个想法只是手动订阅并拦截所有触摸事件并将它们传递给GestureDetector,当你点击时可以决定你 - 然后你可以激活那一点上的点击功能。似乎在6.0.1上正常工作。

import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.Spinner;

/**
 * Version of the Spinner class which doesn't open the popup on swipe
 */
public class SpinnerNoSwipe extends Spinner {

    private GestureDetector mGestureDetector;

    public SpinnerNoSwipe(Context context) {
        super(context);
        setup();
    }

    public SpinnerNoSwipe(Context context, AttributeSet attrs) {
        super(context, attrs);
        setup();
    }

    public SpinnerNoSwipe(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setup();
    }

    private void setup() {
        mGestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return performClick();
            }
        });
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        mGestureDetector.onTouchEvent(event);
        return true;
    }
}