如何动态获取/设置WebView的高度?

时间:2016-06-21 09:30:11

标签: android android-webview

我在我的应用程序中使用WebView来显示html内容,并在其下方显示RecyclerView。我想根据其内容展开和展开WebView。我想要一个“更多”按钮来展开和折叠WebView

问题:

我使用WebView获得TreeViewObserver的高度,但它总是为我提供480个身高。

 ViewTreeObserver viewTreeObserver = mMessageWebView.getViewTreeObserver();
 viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
           // int height = mMessageWebView.getMeasuredHeight();
             mMessageWebView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
            int height = mMessageWebView.getMeasuredHeight();
            mWebViewHeight = height;

            if (height > 300) {

                mMoreTextView.setVisibility(View.VISIBLE);
                Toast.makeText(getActivity(), "height:" + height, Toast.LENGTH_SHORT).show();
                mMessageWebView.getViewTreeObserver().removeOnPreDrawListener(this);
            }

            return false;
        }
    });

点击更多

@OnClick(R.id.web_view_more_text_view)
void onMoreClicked(View view) {
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getActivity(), " more height:" + mWebViewHeight, Toast.LENGTH_SHORT).show();
            // webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));
            mMessageWebView.setLayoutParams(new RelativeLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, RelativeLayout.LayoutParams.WRAP_CONTENT));
        }
    });
}

为了扩展WebView,我可以将高度设置为WRAP_CONTENT但是如何获得正确的高度来折叠它?请帮忙。

谢谢。

0 个答案:

没有答案
相关问题