У меня была эта проблема, и самым быстрым решением для меня было расширение 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;
}
}
, пожалуйста, отправьте код в вопросе. –
Не проверено, но scrollview имеет метод onGenericMotionEvent (MotionEvent e), который вы можете использовать, чтобы узнать, открывается ли Spinner или нет. Вы могли бы попробовать. – Fustigador
@ inner_class7 Это простой счетчик, без дополнительного кода. – jacobz