Android解决ScrollView嵌套Spinner滑动冲突

今天遇到这样一个问题,在ScrollView中嵌套一个Spinner,滑动ScrollView的时候,触碰了Spinner的点击事件,造成冲突。解决方案是,新建一个Spinner类,继承androidx下的spinner,在Spinner中重写onTouchEvent方法解决冲突。然后在布局中引用自己新建的spinner类即可解决滑动冲突了。
代码如下:

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class MySpinner extends androidx.appcompat.widget.AppCompatSpinner {

    private Context context;

    public MySpinner(Context context) {
        super(context);
        this.context = context;
    }

    public MySpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
    }

    public MySpinner(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.context = context;
    }

    //重写onTouchEvent加以判断
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            this.performClick();
        } else if (event.getAction() == MotionEvent.ACTION_DOWN) {
            return true;
        }
        return super.onTouchEvent(event); 
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容