Pad*_*990 15 java android webview
我试图在渲染后获得webview的高度.它总是返回null,我试过getHeight,getMeasuredHeight,getContentHeight它总是返回null.
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/instructions"
android:background="@color/transparent_black" >
<WebView
android:id="@+id/top_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
活动
public class TestActivity extends MenuActivity {
private final static String TAG = "HearingTest";
private String urlTopContent;
private WebView topContent;
private boolean mMoreInfoTop = true;
private int mYdelta = 0;
private int mBottomOffset = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.right_hearing_test);
String topHtml = this.getString(R.string.top_content);
//String bottomHtml = this.getString(R.string.bottom_content);
urlTopContent = "file:///android_asset/html/" + topHtml;
WebViewSettings();
LoadWebPage(urlTopContent);
}
public void WebViewSettings(){
topContent = (WebView) findViewById(R.id.top_content);
topContent.getSettings().setJavaScriptEnabled(true);
topContent.getSettings().setBuiltInZoomControls(true);
topContent.getSettings().setSupportZoom(true);
topContent.getSettings().setLoadWithOverviewMode(true);
topContent.setBackgroundColor(0);
topContent.canGoBack();
int topHeight = topContent.getContentHeight();
Log.d("Top Height", "Height: " + topHeight);
topContent.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals(urlTopContent)) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
View webViewHeight = (View) findViewById(R.id.top_content);
int height = webViewHeight.getHeight();
Log.d("Top Content","Top Content Height:" + height);
}
});
}
public void LoadWebPage(String url){
try {
topContent.loadUrl(url);
Log.d("Loading Web Page", "URL" + url + "connected");
}
catch (Exception e) {
Log.d("Loading Web Page", "URL: " + url + " couldn't connect.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我甚至不知道在渲染后是否可以获得Web视图的高度,但我不明白为什么你不能.如果任何人得到和解决方案,将不胜感激.
Nas*_*ikh 31
在渲染其内容后ViewTreeObserver,您可以使用它WebView来获取实际高度.
这是示例代码.
ViewTreeObserver viewTreeObserver = mWebView.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int height = mWebView.getMeasuredHeight();
if( height != 0 ){
Toast.makeText(getActivity(), "height:"+height,Toast.LENGTH_SHORT).show();
mWebView.getViewTreeObserver().removeOnPreDrawListener(this);
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18626 次 |
| 最近记录: |