ПРОБЛЕМА. Когда я использую свой пользовательский рендерер, расширенный от 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()
после того, как пользователь выберет другой пункт меню, чтобы полноэкранный проигрыватель освободил управление?