我在我的应用程序中使用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
但是如何获得正确的高度来折叠它?请帮忙。
谢谢。