WebChromeClient не вызывает OnHideCustomView - PullRequest
0 голосов
/ 05 января 2019

ПРОБЛЕМА. Когда я использую свой пользовательский рендерер, расширенный от WebChromeClient, он работает отлично. Он входит в мой метод OnShowCustomView (), и я могу в полноэкранном режиме отображать поток сокращений в iframe. Моя проблема в том, когда я затем нажимаю на другой элемент BottomNavigationMenu - этот фрагмент называется НАД первым фрагментом. После отладки я могу сказать, что когда я делаю видео в полноэкранном режиме - когда я нажимаю на другой пункт меню, метод OnHideCustomView () никогда не вызывается, и поэтому эта строка никогда не вызывается: parent.RemoveView(customView).

public class FullScreenClient : WebChromeClient
{
    FrameLayout.LayoutParams matchParentLayout = new 
    FrameLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent,

    ViewGroup.LayoutParams.MatchParent);
    readonly ViewGroup content;
    readonly ViewGroup parent;
    readonly Android.Content.Res.Orientation orientation;

    View customView;
    public BottomNavigationView navigation = MainActivity.navigation;


    public FullScreenClient(ViewGroup parent, ViewGroup content, 
                Android.Content.Res.Orientation orientation)
    {
        this.parent = parent;
        this.content = content;
        this.orientation = orientation;
    }

    public override void OnShowCustomView(View view, ICustomViewCallback callback)
    {
        customView = view;
        view.LayoutParameters = matchParentLayout;
        parent.AddView(view);
        content.Visibility = ViewStates.Gone;
        if(orientation == Android.Content.Res.Orientation.Landscape)
        {
            navigation.Visibility = ViewStates.Gone;
        }
    }

    public override void OnHideCustomView()
    {
        content.Visibility = ViewStates.Visible;
        if (orientation == Android.Content.Res.Orientation.Landscape)
        {
            navigation.Visibility = ViewStates.Visible;
        }
        parent.RemoveView(customView);
        customView = null;
    }
}

Если я не использую FullScreenClient и просто использую WebChromeClient, я могу без проблем переключаться между пунктами меню.

Как я могу назвать это OnHideCustomView() после того, как пользователь выберет другой пункт меню, чтобы полноэкранный проигрыватель освободил управление?

...