Проведите пальцем по нескольким TextViews
Я хотел реализовать функцию свайпирования для нескольких текстовых представлений, где каждое представление реализует прослушиватель с щелчком. Моя проблема в том, что если я добавлю onTouch к каждому текстовому просмотру, и поскольку они маленькие и их много, они не смогут распознать разницу в обоих. Я пытался добавить в родительский макет касание, но кажется, что, поскольку у него есть текстовые представления, он не обнаруживает пролистывание.
Кто-нибудь знает хороший способ осуществить пролистывание влево и вправо по текстовым представлениям и при этом сохранить их при нажатии?
Заранее спасибо.
1 ответ
Чтобы дать вам представление, у меня есть сетка (может быть любой Layout
) там, где есть много ячеек, для обнаружения пролистывания по всем этим ячейкам, а также для определения щелчка по каждой ячейке, у меня есть следующий код, конечно, вам нужно настроить в соответствии с вашими потребностями:
private GestureDetectorCompat gestureDetector;
protected void onAttachments() {
gestureDetector = new GestureDetectorCompat(this.context, new SingleTapConfirm());
//get the width and height of the grid view
final int cellWidth = calendarGridView.getWidth() / 7;
final int cellHeight = calendarGridView.getHeight() / 5;
calendarGridView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent touchEvent) {
int touchX = (int) touchEvent.getX();
int touchY = (int) touchEvent.getY();
if(touchEvent.getAction() == MotionEvent.ACTION_MOVE || gestureDetector.onTouchEvent(touchEvent)){
if (touchX <= calendarGridView.getWidth() && touchY <= calendarGridView.getHeight()) {
int cellX = (touchX / cellWidth);
int cellY = (touchY / cellHeight);
touchPosition = cellX + (7 * (cellY));
positionPrinter.setText("child: " + cellX + "," + cellY);
cellIDprinter.setText(Integer.toString(touchPosition));
// Do you stuff
... ... ...
}
}
return false;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector != null)
gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}private class SingleTapConfirm extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapUp(MotionEvent event) {
return true;
}
}