Проведение по нескольким текстовым представлениям

Я хотел реализовать функцию смахивания по нескольким текстовым представлениям, где каждое представление реализует прослушиватель onclick. Моя проблема в том, что если я добавляю onTouch в каждое текстовое представление, и, поскольку они маленькие и их много, они не смогут распознать разницу в обоих. Я попытался добавить к родительскому макету ontouch, но кажется, что, поскольку у него есть текстовые представления, он не обнаруживает смахивание по ним.

Кто-нибудь знает хороший способ реализовать смахивание влево и вправо по текстовым представлениям и при этом сохранить их onClick?

Заранее спасибо.

вы можете обнаруживать прикосновения по всей области, записывать координаты и переводить их в обнаружение текстовых изображений

ruben 26.03.2018 21:53
0
1
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы дать вам представление, у меня есть gridview (может быть любой 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;
    }
}

и это по-прежнему определяет, инициировать ли смахивание по текстовому представлению в вашем случае над ячейкой или мне нужно создать макет над представлениями?

Radaeld 27.03.2018 02:53

Другие вопросы по теме