Apertura childview de vuelta de ScrollView
-
05-09-2019 - |
Pregunta
Tengo un ScrollView
padres con miras niño. Cuando el usuario presiona el botón de retroceso, quiero la opinión de los niños a controlar el evento. He intentado un par de cosas, pero ninguno de ellos parece funcionar. Al pulsar el botón de retroceso mata a la actividad.
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;
}
}
en la vista de niño tengo el siguiente código
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;
}
}
En el ScrollView
también he intentado anular el dispatchKeyEvent
method para volver falsa, pero que no funcionó bien. ¿Qué estoy haciendo mal aquí?
Gracias!
Solución 2
lo he descubierto. La razón de que esto no estaba funcionando era porque la vista niño no tiene el foco.
Al establecer la propiedad requestFocus()
en el constructor de la vista del niño ha solucionado el problema.
Otros consejos
@Override
public boolean onKeyDown(int i, KeyEvent event) {
if (i == KeyEvent.KEYCODE_BACK) {
return true;
else {
super.onKeyDown(i, event);
return true;
}
}
return false;
}
Además, creo que tendría que interceptar la pulsación de tecla en su actividad y no la vista.