Я работаю в приложении для Android и хочу получить событие щелчка в setOnTouchListener текстового представления внутри пользовательского списка. Когда я возвращаю true из setOnTouchListener, я правильно получаю событие щелчка, но прокрутка ListView не будет работать в этой части текстового представления, потому что у меня уже есть другое событие щелчка в этом ListView, и я уже переопределил ListView setOnTouchListener.
ListView setOnTouchListener
convertView.setOnTouchListener (новый OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (IsTablet) {
if (mDetailList.size() > 3)
v.getParent().requestDisallowInterceptTouchEvent(true);
} else {
if (mDetailList.size() > 2)
v.getParent().requestDisallowInterceptTouchEvent(true);
}
return false;
}
});
TextView setOnTouchListener
private float mDownX;
private float mDownY;
private final float SCROLL_THRESHOLD = 10;
private boolean isOnClick;
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mDownX = ev.getX();
mDownY = ev.getY();
isOnClick = true;
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
if (isOnClick) {
Log.i(LOG_TAG, "onClick ");
//TODO onClick code
}
break;
case MotionEvent.ACTION_MOVE:
if (isOnClick && (Math.abs(mDownX - ev.getX()) > SCROLL_THRESHOLD || Math.abs(mDownY - ev.getY()) > SCROLL_THRESHOLD)) {
Log.i(LOG_TAG, "movement detected");
isOnClick = false;
}
break;
default:
break;
}
return true;
}
Есть ли способ получить событие щелчка, вернув false из TextView setOnTouchListener, или, пожалуйста, предложите мне другое решение этой проблемы.
setOnClickListener
в текстовом представлении.ScrollView
позволяет кликать по своему содержимому. Чтобы изменить события, проходящие через представления, переопределитеonInterceptTouchEvent
изScrollView
. - person S.D.   schedule 21.12.2014ListView
и поместить некоторую логику вonInterceptTouchEvent()
, чтобы различать свайпы вверх/вниз, которые переходят кListView
, и простые касания, которые переходят кTextViews
. [Эта страница][1] показывает, как тестировать свайпы вверх/вниз с помощьюMotionEvent
, который вы получаете как часть методаonInterceptTouchEvent()
. [1]: codetheory.in/ - person JASON G PETERSON   schedule 21.12.2014