Скрыть MediaController после переопределения hide () - PullRequest
0 голосов
/ 06 декабря 2018

Мы разрабатываем приложение для Android, в котором крайне важно предотвратить отображение MediaController из VideoView.Это было достигнуто путем переопределения hide():

mediaController = new MediaController(getContext(), false){
    @Override
    public void hide() {
        //Do not hide MediaController
        if (videoView.getVisibility() == VISIBLE){
            return;
        }
        //Hide only if VideoView is not visible anymore
        super.hide();
    }
};

. VideoView является частью фрагмента, и если этот фрагмент удаляется и появляется следующий фрагмент, MediaController остается видимым, но недоступным.Мы пробовали разные решения, чтобы убедиться, что super.hide() вызывается при удалении VideoView, но безуспешно.Тот, что выше, не работает.Мы также изменили оператор if на:

  • if (videoView.isShown())
  • if (videoView.isActivated())

Мы даже пытались вручную setVisibility(View.GONE) для MediaController вonDetach() Фрагмента.

Как мы можем правильно скрыть MediaController, как только Фрагмент отсоединен?

1 Ответ

0 голосов
/ 06 декабря 2018

Мы наконец нашли решение этой проблемы.

Переопределить hide():

@Override
public void hide() {
    //Do not hide MediaController
    if (videoView.isShown()){
        return;
    }
    super.hide();
}

В onDetach() вызовите hide() вручную после super.onDetach():

@Override
public void onDetach() {
    super.onDetach();
    mediaController.hide();
}

MediaController теперь будет постоянно видимым на время, пока VideoView видим.Как только VideoView исчезнет, ​​MediaController также исчезнет.

...