Подтвердить что ты не робот

Android-кнопка имеет setOnTouchListener, вызывающий ее, но не переопределяет performClick

когда я пытаюсь добавить ontouchListner для кнопки, получает меня

У кнопки есть setOnTouchListener, вызывающий ее, но не переопределяющий выполнитьНажмите

предупреждение. кто-нибудь знает, как это исправить.  спасибо..

1

btnleftclick.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        return false;
    }
});

Ошибка:

Пользовательское представление имеет значение setOnTouchListener, но не отменяет performClick Если вид, который переопределяет onTouchEvent или использует OnTouchListener также не выполняет функцию performClick и вызывает его, когда обнаружены клики, представление может не обрабатывать действия доступности должным образом. Логическую обработку действий кликов следует в идеале Просмотреть # performClick, поскольку некоторые службы доступности invoke performClick когда должно произойти действие клика.

4b9b3361

Ответ 1

Решение:

  • Создайте класс, который расширяет Button или любой вид, который вы используете, и переопределяйте performClick()

    class TouchableButton extends Button {
    
        @Override
        public boolean performClick() {
            // do what you want
            return true;
        }
    }
    
  • Теперь используйте этот TouchableButton в xml и/или коде, и предупреждение не будет!

Ответ 2

Вы пробовали добавить:

view.performClick()

или добавить аннотацию suppresslint:

@SuppressLint("ClickableViewAccessibility")

?

Ответ 3

Вам нужно проверить этот код внутри функции onCreate, надеясь, что это вам поможет.

    final ViewGroup main = (RelativeLayout)findViewById(R.id.relative);
    final ImageView imageView = (ImageView)findViewById(R.id.imageView);

       imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            Random r = new Random();
            final int X = r.nextInt(600)+ 50;
            final int Y = r.nextInt(1024)+ 50;

            switch (motionEvent.getAction()& MotionEvent.ACTION_MASK){

                case MotionEvent.ACTION_DOWN:
                    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams();

                    xCoordinator = X - layoutParams.leftMargin;
                    yCoordinator = Y - layoutParams.rightMargin;
                    break;

                case MotionEvent.ACTION_MOVE:
                    RelativeLayout.LayoutParams layparams = (RelativeLayout.LayoutParams)view.getLayoutParams();
                    layparams.leftMargin = X - xCoordinator;
                    layparams.rightMargin = Y - yCoordinator;
                    layparams.rightMargin = 0;
                    layparams.bottomMargin = 0;
                    view.setLayoutParams(layparams);
                    break;

            }
            main.invalidate();
            return true;
        }
    });