ActionBar, die YouTubePlayerSupportFragment von der YouTube Player-API überlagert
Ich habe eine Aktivität verlängertAppCompatActivity
, unter Verwendung eines Themas, das @ erweiteTheme.AppCompat.Light.DarkActionBar
. Die Ansicht dieser Aktivität ist einLinearLayout
mit einerVERTICAL
Orientierung mit folgenden Ansichten:
A FrameLayout
mit einemYouTubePlayerSupportFragment
. Beachten Sie, dass ich die folgenden Methoden für das erhaltene @ aufruYouTubePlayer
bei erfolgreicher Initialisierung:
setPlayerStyle(PlayerStyle.CHROMELESS)
addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CUSTOM_LAYOUT)
Ich setze auch einonClickListener
in der Player-Ansicht, soll das @ verstecken und anzeigActionBar
auf Nachfrage
Eine andere Ansicht mit Videodetails und anderen Dingen
Einige Ansicht von untenBeachten Sie, dass die Aktivität @ aufrusupportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY)
und dass dasLinearLayout
hat eine obere Polsterung vonandroid.support.v7.appcompat.R.attr.actionBarSize
.
In demAndroidManifest.xml
, die Aktivität hatandroid:configChanges="orientation|screenSize"
einstellen
In der Aktivität istonConfigurationChanged
-Methode, ich überprüfe die Bildschirmausrichtung. Wenn es sich um ein Querformat handelt, werde ich "Vollbild", wenn es sich um ein Hochformat handelt, kehre ich zum normalen Layout zurück.
Mit "Vollbild" meine ich:
Einstellung von Ansicht Nr. 2 und Ansicht Nr. 3visibility
zuView.GONE
Einstellung der AktivitätsupportActionBar
Hintergrundfarbe zu einer transparenten Farbe wie0x55000000
EinstellunggetWindow().getDecorView().systemUiVisibility
zuView.SYSTEM_UI_FLAG_FULLSCREEN
Ändern der Ansicht Nr. 1LayoutParams
, setzt beidewidth
undheight
zuMATCH_PARENT
CallingsetFullscreen(true)
auf derYouTubePlayer
Jetzt, wenn ich in meiner App bin, funktioniert alles im Hochformat: Das Video wird abgespielt, der Player befindet sich korrekterweise direkt unter demActionBar
. Es funktioniert weiterhin wie erwartet, wenn Sie in den Querformatmodus wechseln: Alles außer dem Player wird ausgeblendet (sogar dasActionBar
). Dann klicke ich auf den jetzt im Vollbildmodus verfügbaren YouTube-Player.
Das erwartete Ergebnis wäre, dass dieActionBar
wird angezeigt, ohne die Wiedergabe zu unterbrechen.
Das tatsächliche Ergebnis ist, dass sowohl die Systemstatusleiste als auch die Aktionsleiste angezeigt werden und die Wiedergabe mit dem folgenden Fehler unterbrochen wird:
YouTube Die Videowiedergabe wurde aufgrund eines nicht autorisierten Overlays auf dem Player gestoppt. Die YouTubePlayerView wird von android.support.v7.widget.ActionBarContainer {43744840 V.ED .... ........ 0,50-1280,162 # 7f0d005b app: id / action_bar_container} verdeckt. Die Ansicht befindet sich im YouTubePlayerView, wobei der Abstand in Pixel zwischen den Rändern der verdeckten Ansicht und der YouTubePlayerView wie folgt ist: links: 0, oben: 50, rechts: 0, unten: 558 ..
Der YouTubePlayer soll von einer ActionBar überlagert werden (siehe @Overlay ActionBar Demo im @ gefundAnwendungsbeispiele. Also, was ist das Problem hier? Ich dachte, es wurde nur nach der Ansicht gesucht, in der es sich um eine ActionBar handelt, oder nicht, also verstehe ich nicht, wie genau dieser Fehler überhaupt möglich ist!