Я использую клавишу ввода на моей аппаратной клавиатуре, чтобы щелкнуть по кнопке в представлении моего приложения для Android.Когда я нажимаю клавишу ввода в первый раз, когда я только что запустил приложение, кнопка нажимается, и это то, что мне нужно.Но когда я снова нажимаю клавишу ввода после этого, нажимается какой-то другой графический элемент в представлении, а не моя кнопка.Так что мне просто нужно, чтобы при нажатии клавиши ввода несколько раз всегда нажималась только кнопка ... Как я могу это сделать?
Это мой код:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
int[] coordinates = new int[2];
v.getLocationOnScreen(coordinates);
int x = coordinates[0];
int y = coordinates[1];
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(downTime,
eventTime,
MotionEvent.ACTION_DOWN,
x,
y,
metaState
);
//v.dispatchTouchEvent(motionEvent);
//button.setSelected(true);
//v.setSelected(true);
// doSomething();
v.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
boolean b = v.dispatchTouchEvent(motionEvent);
Toast.makeText(getApplicationContext(), Boolean.toString(b), Toast.LENGTH_LONG).show();
//v.onTouchEvent(motionEvent);
return true;
case KeyEvent.KEYCODE_VOLUME_UP:
//doSomething();
return true;
default:
return super.onKeyUp(keyCode, event);
}
}
Некоторые инструкции закомментированы, потому что я тестирую ...
Между тем я заметил, что это работает хорошо, когда я касаюсь ImageView, касаясь сенсорного экрана смартфона прямо между каждым нажатием клавиши ввода ...