java - 微调器禁用滑动打开

标签 java android android-spinner

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

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

最佳答案

我遇到了这个问题,对我来说最快的解决方法是将 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;
    }
}

关于java - 微调器禁用滑动打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34071246/

相关文章:

java - 为每个用户创建单独的表来存储数据或使用单个表

android - LoaderManager 的 restartLoader 方法中的 NullPointerException

android - 在 android 上处理 SMS 权限以自动验证 OTP

android - 更改微调器下拉图标

屏幕旋转后多次调用 Android 微调器 onItemSelected

android - 重新启动或恢复应用程序后如何保持微调器选择的项目

java - 使用日历开始日期和结束日期填充 jtable

java - 尝试解决此 Java 问题 : finding palindromes (String)

java - 如何在xml android中绘制四分之一圆

android - 以编程方式为从 XML 创建的现有菜单创建子菜单