我在我的XML中定义了WebView:
<WebView
android:id="@+id/streetview_webview"
android:layout_width="match_parent"
android:layout_height="164dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/header" />
现在我想在我的代码中获取此WebView的高度,以排除滚动我的CustomViewPager的webview滚动
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (childId > 0) {
View webv = findViewById(R.id.webView1);
if (webv != null) {
int x = webv.getLeft();
int x2 = x + webv.getLayoutParams().width;
int y = webv.getTop();
int y2 = y + webv.getMeasuredHeight();
int targetx = (int) event.getX();
int targety = (int) event.getY();
if (targetx > x && targetx < x2 && targety > y && targety < y2) {
return false;
}
}
}
return super.onInterceptTouchEvent(event);
}
我试过了
webv.getHitRect
但这会获得父级的高度(整个屏幕)
webv.getLayoutParams().width; // <- working
webv.getLayoutParams().height; // -1
和
webv.getHeight
但他们都没有让我达到164dp的高度。
编辑:谢谢家伙Akos Cz是对的。
答案 0 :(得分:3)
尝试使用getMeasuredHeight()方法。在布局过程的度量传递之后,它在所有View对象上可用。
请查看以下网址的文档以获取更详细的说明,尤其是以下部分:
http://developer.android.com/reference/android/view/View.html
答案 1 :(得分:0)
要在加载内容后获得webview
的高度,那么这行代码可以帮助您。
ViewTreeObserver viewTreeObserver = webview.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int height = webview.getMeasuredHeight();
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(webview.getLayoutParams());
if( height != 0 ){
Toast.makeText(DesignTemplateView.this,"height:"+height,Toast.LENGTH_SHORT).show();
webview.getViewTreeObserver().removeOnPreDrawListener(this);
}
return false;
}
});