android webview自动高度_Android如何获取WebView内容高度

本文探讨了在Android中如何实时获取WebView的内容高度,包括通过js、getContentHeight()和measure()方法的尝试与分析,以及在高度变化时的监听策略。针对WebView与RecyclerView滑动冲突的问题,提出了自定义解决办法。
摘要由CSDN通过智能技术生成
1b3264fa0005dd6cbf7b3f4566f0d25e.png 作者: zhuguohui   地址: https://www.jianshu.com/p/ad22b2649fba

最近项目需求中需要实现WebView显示内容,下方显示评论列表,列表还可以分页加载。我最近做了技术预研,难度主要是实时获取WebView的高度。

效果

1 . 分页加载

04dcff205694b6b6a2f255245e24468e.gif

2 . 动态获取高度,点击阅读更多,会将几个隐藏的div,显示出来,造成WebView内容高度变化。

7968929a2c61c6b7eb784cd62c84f256.gif

##实现 使用的ScrollView包裹一层LinearLayoutLinearLayout中依次防止WebViewRecyclerView。布局如下:

<?xml version="1.0" encoding="utf-8"?>
<com.trs.studyview.view.TRSScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/scrollView"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.trs.studyview.MainActivity">

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">

<com.trs.studyview.view.TRSWebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="100dp" />

<android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent" />
LinearLayout>

com.trs.studyview.view.TRSScrollView>

问题一,如果获取WebView高度

1.通过js获取

以下是js获取高度的方法

网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的高)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth

下面是测试代码

package com.trs.studyview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.trs.studyview.adpater.CommentAdapter;
import com.trs.studyview.view.TRSScrollView;
import com.trs.studyview.view.TRSWebView;

public class MainActivity extends AppCompatActivity {
TRSWebView webView;
RecyclerView recyclerView;
String url = "http://app.nxnews.net/ningxia/cfwz/zt/201708/t20170807_1859270.html";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值