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.