Открытие дочернего просмотра обратно из scrollview
-
05-09-2019 - |
Вопрос
У меня есть родитель ScrollView
с дочерним представлением.Когда пользователь нажимает кнопку "Назад", я хочу, чтобы дочернее представление обрабатывало событие.Я попробовал пару вещей, но, похоже, ни одна из них не работает.Нажатие кнопки "Назад" прекращает действие.
public class GameScrollView extends ScrollView{
public GameScrollView(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent (MotionEvent ev){
return false;
}
@Override
public boolean onKeyDown (int keyCode, KeyEvent event){
return false;
}
}
в дочернем представлении у меня есть следующий код
public class GameView extends View implements OnTouchListener, onKeyListener{
public boolean onKey(View v, int keyCode, KeyEvent event){
if(keyCode == KeyEvent.KEYCODE_BACK){
//do stuff
}
invalidate();
return true;
}
}
В ScrollView
Я также попытался переопределить dispatchKeyEvent
метод, возвращающий false, но это тоже не сработало.Что я здесь делаю не так?
Спасибо!
Решение 2
Я понял это.Причина, по которой это не работало, заключалась в том, что дочерний вид не имел фокуса.
Установка requestFocus()
свойство в конструкторе дочернего представления устранило проблему.
Другие советы
@Override
public boolean onKeyDown(int i, KeyEvent event) {
if (i == KeyEvent.KEYCODE_BACK) {
return true;
else {
super.onKeyDown(i, event);
return true;
}
}
return false;
}
Кроме того, я думаю, вам пришлось бы перехватывать нажатие клавиши в вашем действии, а не в представлении.