Действительно, вы можете переопределить кнопку «Назад» в Android. Это может быть достигнуто путем переопределения функции OnKeyDown следующим образом:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Hide keyboard and activate previous activity
return false;
}
return super.onKeyDown(keyCode, event);
}
(Хотя я признаю, я никогда не испытывал это, чтобы увидеть, если он будет работать в то время как клавиатура открыта ...)
ад, если это не работает, вы можете даже пойти о делать что-то немного «Hacky», как это:
boolean opened = true;
public void setListenerToRootView(){
final View activityRootView = getWindow().getDecorView().findViewById(android.R.id.content);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100)
opened = true;
else if(opened == true)
opened = false;
}
});
}
Такой подход, очевидно, может привести к ошибкам, если они имеют плавающую клавиатуру или что-то конкретное, но вы можете обрабатывайте его по мере необходимости.
Примечание: Ничего из этого не означает, что стрелка указывает вниз. Я не думаю, что вы действительно можете изменить это, хотя вы можете хотя бы изменить его поведение, перейдя к предыдущему действию всякий раз, когда клавиатура была удалена.
Это поведение по умолчанию. –