SurfaceViews не являются ViewGroups , поэтому он не ведет себя как обычный LinearLayout / RelativeLayout, который передает свои события своим дочерним элементам. Вместо этого вы рисуете его вручную, переопределяя onDraw, или вызываете метод рисования из какого-то внешнего цикла, правильно? Невозможно определить, как вы визуализируете свое представление поверхности, просто с помощью кода, которым вы поделились, но кажется, что вы вызываете этот метод draw () из некоторого вида действия / фрагмента контроллера, верно?
Что вам нужновнутри SurfaceView делать то, что обычно делает ViewGroup для вас: найти все дочерние элементы - по дочерним элементам. Я имею в виду представления, которые вы визуализируете внутри области SurfaceView - и вызвать их onTouchEvent. В вашем случае кажется, что вам нужно просто вызвать Joystick TouchEvent.
Вот пример кода:
public class GameView extends SurfaceView {
//initialization and drawing stuff
@Override
public boolean onTouchEvent(MotionEvent ev) {
return joystickOnScreen.onTouchEvent(ev);
}
}