今天遇到这样一个问题,在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);
}
}
网友评论