How to get the full height of in android WebView?

。_饼干妹妹 提交于 2020-04-08 09:57:35

问题


I have a RelativeLayout with WebView. I am loading some generated html text into that WebView. After loading the data WebView height exceeding the screen. Now I need the height of the entire WebView. Till now I tried WebView#getHeight(), WebView#getBottom() but I'm getting the height of visible content.

How to get the total height of WebView.?


回答1:


Finally I got the answer for my question. Here is the answer.

After loading WebView we will get call in WebViewClient#onPageFinished there we need to call javascript to get the height of full content of WebView

WebViewClient class

/**
 * Custom web client to perform operations on WebView
 */
class WebClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:AndroidFunction.resize(document.body.scrollHeight)");
        }
    }
}

After that we will get callback with height in WebInterface class which is Registered as JavascriptInterface

/**
 * WebView interface to communicate with Javascript
 */
public class WebAppInterface {

    @JavascriptInterface
    public void resize(final float height) {
        float webViewHeight = (height * getResources().getDisplayMetrics().density);
        //webViewHeight is the actual height of the WebView in pixels as per device screen density
    }
}



回答2:


Wrap your WebView within a ScrollView and webView.getHeight() will return the height of the actual WebView content. Make sure your WebView's height attribute is set to wrap_content.

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </WebView>
</ScrollView>



回答3:


public class CustomWebView extends WebView{
    public CustomWebView(Context context) {
        super(context);
    }
    int ContentHeight = 0;
    public int getContentHeight(){
        if(ContentHeight==0)
            ContentHeight = computeVerticalScrollRange();
        return ContentHeight;
    }
}

Webview has protected method computeVerticalScrollRange(). you can access this method by creating custom one.

((CustomWebView) webView).getContentHeight())



回答4:


In your Java class add the getWindow()

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_webview);
}



回答5:


My Answer:-

I think you have to remove padding properties from your layout.xml file

(i.e) Remove the following content from your XML file and try it.

android:paddingBottom    
android:paddingLeft    
android:paddingRight    
android:paddingTop

Hope it helps!!




回答6:


private int getScale(){
    Display display = ((WindowManager) 
    getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth(); 
    Double val = new Double(width)/new Double(PIC_WIDTH);
    val = val * 100d;
    return val.intValue();
}

check this link! for more information



来源:https://stackoverflow.com/questions/43394498/how-to-get-the-full-height-of-in-android-webview

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!