I'm using a `MediaController` to control video play back for my `VideoView`. I've overriden `VideoView.setOnPreparedListener` so that the ActionBar/`Toolbar` is hidden (`hide()`) after the video first finishes buffering. And I'd like the toolbar to *comeback* when the `MediaController` does. I've tried **overriding** the `MediaController` `show()` and `hide()` methods, like so:

```
    mVideoView.start();
    // Media Controller
    mMediaController = new MediaController(this){
        @Override
        public void show() {
            getSupportActionBar().show();
        }
        @Override
        public void hide() {
            getSupportActionBar().hide();
        }
    };
    mMediaController.setAnchorView(mVideoView);
    mVideoView.setMediaController(mMediaController);
    // Hide toolbar once video starts
    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            // Hide support bar
            getSupportActionBar().hide();
        }
    });

```

This works, except the playback controls stop showing up! And of course, calling a recursive `mMediaController.show()` within the overridden method doesn't work... Can I have my cake an eat it too?

**Edit**

So I've also, unsucessfully tried taking advantage of the `VideoView.setOnTouchListener` and `VideoView.setOnCompletetionListener`:

```
    mVideoView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            getSupportActionBar().show();
            return false;
        }
    });
    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            getSupportActionBar().hide();
        }
    });

```

It does show, but it won't hide again, perhaps I misinterpret `OnCompletetionListener`?

**Edit 2**
From Amir's suggestion, I override the `onTouch` for `VideoView`, not *perfect*, but it's on like the right track:

```
    mMediaController = new MediaController(this);
    mVideoView = (VideoView) findViewById(R.id.media_player);
    mVideoView.setOnTouchListener(new View.OnTouchListener() {
        boolean flag;
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()){
                case MotionEvent.ACTION_DOWN:
                    if(flag) {
                        mMediaController.hide();
                        getSupportActionBar().hide();
                    } else {
                        mMediaController.show();
                        getSupportActionBar().show();
                    }
                    flag = !flag;
                    return true;
            }
            return false;
        }
    });

```

This mostly works, it toggles the `Toolbar` and so sometimes the `Toolbar` will appear without the `MediaController`, and each time I toggle it, the `MediaController` does it's regular 'appear for a few seconds and then disappear.' In any case, it is a working solution.