gpt4 book ai didi

Android:View.measure(int,int) 总是想要 (0,0)

转载 作者:行者123 更新时间:2023-11-29 15:32:59 25 4
gpt4 key购买 nike

我有一个已添加到 View 组的 WebView:

webView = new WebView(context);
addView(webView, ViewGroup.LayoutParams.WRAP_CONTENT);

这存在于我的 View 组的构造函数中。

然后在布局上,我想这样做:

webView.measure(View.MeasureSpec.makeMeasureSpec(getWidth(),View.MeasureSpec.EXACTLY),  
View.MeasureSpec.makeMeasureSpec(3000, View.MeasureSpec.AT_MOST));

不幸的是,除非我指定 EXACTLY,否则 webView.getMeasuredHeight() 总是返回 0。我想要做的是确定 webview 的大小,以便我可以在其周围放置其他元素。我指定我希望 webview 足够大以包含它的内容,并且我提供了大量的空间。那为什么还是0呢?

谢谢

更新1

当 webView 收到 measure() 请求时,它应该知道它有多少数据,不是吗?

webView = new WebView(context);
webView.loadData("<html></html>","text/html", "utf-8");
addView(webView, new ViewGroup.LayoutParams(getWidth(), 1000));

最佳答案

这个:

addView(webView, ViewGroup.LayoutParams.WRAP_CONTENT);

是非常错误的。第二个参数,当作为 int 传递时,是父 View 中的索引。这并不像您认为的那样。您应该改为传递 LayoutParams 的新实例。

您的问题可能是您在 WebView 有时间加载 HTML 文档之前进行了测量。您使用约束 AT_MOST 3000 进行测量,而 0 绝对遵守该约束。 WebView 只是告诉您它的内容目前的高度为 0。

关于Android:View.measure(int,int) 总是想要 (0,0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com