1

I am using a WebView in my application to show html content, and showing a RecyclerView below of it. I want to expand and collapse WebView based on its content. I want to have a button "MORE" to expand and collapse the WebView.

Problem:

I am getting height of WebView by using TreeViewObserver but it always provides me 480 height.

 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;
        }
    });

On More Clicked

@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));
        }
    });
}

For expanding the WebView I can set the height to WRAP_CONTENT but how to get the correct height to collapse it? Please help.

Thank You.

Ashish Tiwari
  • 2,168
  • 4
  • 30
  • 54

0 Answers0