Скрыть части вебстраницы в WebView на kotlin
Нужно загрузить веб страницу в WebView(в Fragment). Задача состоит в том, чтоб отобразить только часть страницы. Пытаюсь скрыть header(для начала), но всё равно подгружает страницу целиком. В официальной документации я не нашла ответа. Из найденных примеров на java получилось Это:
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_home, container, false)
webView = root.findViewById<WebView>(R.id.webview_home);
webView.settings.javaScriptEnabled = true //enable javaScript
webView.setWebViewClient(WebViewClient())
webView.loadUrl(url)
return root
}
}
fun onPageFinished(webView: WebView, url: URL) {
webView.loadUrl(
"javascript:(function() { " +
"var head = document.getElementsById('h_area')[0].style.display='none'; " +
"})()"
);
Ответы (2 шт):
Автор решения: Andrew
→ Ссылка
Я думаю решить проблему можно предварительной загрузкой страницы и убиранием заголовка и футера:
Document document = Jsoup.connect(mUrl).get();
document.getElementsByClass("header-container").remove();
document.getElementsByClass("footer").remove();
WebSettings ws = mWebView.getSettings();
ws.setJavaScriptEnabled(true);
//mWebView.loadData(document.toString(),"text/html","utf-8");
mWebView.loadDataWithBaseURL(mUrl,document.toString(),"text/html","utf-8","");
Автор решения: Anna Berg
→ Ссылка
Сработало вот это
val root = inflater.inflate(R.layout.fragment_home, container, false)
mWebView = root.findViewById<WebView>(R.id.webview_home)
// подгон содержимого webView под размер экрана
mWebView.settings.loadWithOverviewMode = true
mWebView.settings.useWideViewPort = true
mWebView.settings.javaScriptEnabled = true //enable javaScript
// Set web view client
mWebView.webViewClient = object: WebViewClient(){
override fun onPageFinished(view: WebView, url: String) {
// Page loading finished
view.loadUrl(
"""javascript:(function f() {
document.getElementById('top_menu').style.display='none';
})()"""
)