Частичный экран WebView с <видео> разрезать пополам
У меня есть приложение для планшета с разделенной раскладкой - список слева и панель подробностей справа. Правая панель - это WebView, и она содержит тег. Тот'Все работает нормально, за исключением того, что вся правая часть WebView обрезана и отображается белым цветом.
Почему он рендерит таким образом, и как я могу избежать его, не вставляя огромный хак?
Я свел его к простому тестовому проекту, который ямы опубликовалина github.
ВотСкриншот:http://d.pr/i/dfEh.
Серая область слева - это то место, к которому относится представление списка. Я поменял его на пустойFrameLayout
для простоты.Отрезанная часть вдоль правой стороны WebViewЯВЛЯЕТСЯ той же ширины, что и вид списка. Это'Также стоит отметить, что любой контент ниже видео также обрезается - белая область расширяет всю высоту WebView.
Некоторые вещи ямы пробовали:
заменить представление списка чем-то другимвключить и отключитьWebSettings
: JavaScript, использовать широкий видовой экран, загрузить с режимом обзораустановитьWebViewClient
иWebChromeClient
включить и выключить аппаратное ускорениеразличные настройки в,View.setScrollBarStyle
WebView.setVerticalScrollBarOverlay
и тому подобноеподправить
атрибуты и стили высоты / шириныразличные форматы видео, включая mp4 с h264 и aac, m3u8 и поток rtsp на youtubeразличные устройства, включая Fire HD, Nexus 7, Galaxy 10.1 и XoomAndroid версии 3.1, 3.2, 4.0, 4.1Текущее решение:
Я закончил работать над этим, используя полноэкранный WebView, накладывая поверх него свой список и устанавливая левое поле для самого внешнего элемента контейнера в html. Это довольно странно, и получение размера представления списка с различной плотностью и разрешением подвержено ошибкам, поэтому я действительно хотел бы решить это правильным способом.
Отрывки:
Как я уже упоминал, на github размещен (не) рабочий тестовый стенд, но вот важные моменты:
HTML загружается в WebView (это все):
Title
Основной файл макета:
В :onCreateView
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;
Я действительно почесал голову над этим, и яя удивлен, я нене смог найти упоминаний об этом. Любой вклад приветствуется, однако надуманным.