我有RelativeLayout
WebView
。我正在将一些生成的html文本加载到WebView
中。加载超过屏幕的数据WebView
高度后。现在我需要整个WebView
的高度。直到现在我尝试了WebView#getHeight()
,WebView#getBottom()
,但我得到了可见内容的高度。
答案 0 :(得分:7)
最后我得到了我的问题的答案。这是答案。
加载WebView
后,我们会在WebViewClient#onPageFinished
接听电话,我们需要调用javascript才能获得WebView
WebViewClient
上课
/**
* 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)");
}
}
}
之后我们将在WebInterface
类中获得高度回调,该类已注册为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
}
}
答案 1 :(得分:2)
将WebView
换成ScrollView
,webView.getHeight()
将返回实际WebView内容的高度。确保WebView
的高度属性设置为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>
答案 2 :(得分:1)
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已保护方法computeVerticalScrollRange()
。您可以通过创建自定义方法来访问此方法。
((CustomWebView) webView).getContentHeight())
答案 3 :(得分:0)
在Java类中添加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);
}
答案 4 :(得分:0)
我的答案: -
我认为您必须从layout.xml文件中删除填充属性
(即)从XML文件中删除以下内容并进行尝试。
android:paddingBottom
android:paddingLeft
android:paddingRight
android:paddingTop
希望它有所帮助!!
答案 5 :(得分:0)
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();
}
检查 link!了解更多信息