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 когда должно произойти действие клика.
Ответы
Ответ 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;
}
});