Częściowy ekran WebView z <video> obciętym o połowę

Mam aplikację na tablet z podzielonym układem - listę po lewej stronie i okienko szczegółów po prawej stronie. Prawe okienko to WebView i zawiera<video> etykietka. To wszystko działa dobrze, z wyjątkiem tego, że cała prawa strona WebView jest odcięta i sprawia, że ​​zwykły biały kolor.

Dlaczego renderuje się w ten sposób i jak mogę tego uniknąć bez włożenia ogromnego hakowania?

Sprowadziłem to do prostego projektu testowego, który opublikowałemna github.

Tutaj jestzrzut ekranu: http://d.pr/i/dfEh.

Szary obszar po lewej stronie to miejsce, do którego należy widok listy. Zmieniłem go na pustyFrameLayout dla prostoty.Odcięta część wzdłuż prawej strony WebViewJEST ta sama szerokość co widok listy. Warto również zauważyć, że każda treść poniżej wideo jest również odcięta - biały obszar rozszerza całą wysokość WebView.

Niektóre rzeczy, które próbowałem:

zamień widok listy na innywłącz i wyłączWebSettings: javascript, użyj szerokiej rzutni, załaduj z trybem podgląduustawić aWebViewClient i aWebChromeClientwłączać i wyłączać przyspieszenie sprzętoweróżne ustawienia wView.setScrollBarStyle, WebView.setVerticalScrollBarOverlayi podobnepodkręcić<video>atrybuty i style wysokości / szerokościróżne formaty wideo, w tym mp4 z h264 i aac, m3u8 i strumień rtsp youtuberóżne urządzenia, w tym pokazany Fire HD, Nexus 7, Galaxy 10.1 i XoomAndroid w wersji 3.1, 3.2, 4.0, 4.1

Aktualne obejście:

Skończyło się na tym, korzystając z pełnoekranowego WebView, nakładając na niego widok listy i ustawiając lewy margines na najbardziej zewnętrznym elemencie kontenera w html. Jest to raczej hacky, a uzyskanie rozmiaru widoku listy na różnych gęstościach i rozdzielczościach jest podatne na błędy, więc naprawdę chciałbym rozwiązać ten problem we właściwy sposób.

Fragmenty:

Jak już wspomniałem, na githubie publikowane jest (nie) działające łóżko testowe, ale tutaj są ważne bity:

HTML załadowany do WebView (jest to WSZYSTKO):

<html>
<head><title>Title</title></head>
<body style="margin:0">
    <video x-webkit-airplay="allow" controls="controls" style="width:100%">
        <source src="http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"></source>
    </video>
</body>
</html>

Główny plik układu:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <fragment android:name="com.concentricsky.android.webviewvideotest.ListFragment"
        android:id="@+id/item_list"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <!-- The WebView is attached here -->
    <FrameLayout android:id="@+id/detail_container"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3" />

</LinearLayout>

WonCreateView:

    View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
    webView = (WebView) rootView.findViewById(R.id.webview);
    webView.setWebChromeClient(new WebChromeClient());
    webView.loadUrl("file:///android_asset/test.html");
    return rootView;

Naprawdę drapam się po tej głowie i dziwię się, że nie znalazłem żadnej wzmianki o tym. Wszelkie dane wejściowe są doceniane, jakkolwiek daleko idące.

questionAnswers(3)

yourAnswerToTheQuestion