gpt4 book ai didi

java - Android getMeasuredHeight 获取错误值

转载 作者:行者123 更新时间:2023-11-30 08:54:56 25 4
gpt4 key购买 nike

我有这样的 XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000" >
<com.XXXXXXXXXXX.view
android:layout_width="200dp"
android:background="#ffffff"
android:layout_height="400dp"
android:layout_centerInParent="true" />

我在方法 onMesure 中获取 View 高度,如下所示:

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (!isMeasured)
{
isMeasured = true;
mViewHeight = getMeasuredHeight();
mViewWidth = getMeasuredWidth();...}

mViewWidth 正确(600px),但 mViewHeight 错误(1626px)。
有人可以给我一些指示吗?
非常感谢。

最佳答案

getMeasuredHeight() 将返回 child 所需的高度,不一定是它实际获得的高度。您还将获取第一个测量值并将宽度/高度设置为该值。 onMeasure 可以因不同原因被多次调用。目的是根据给定的 MeasureSpec 约束说明您的 View 需要多少高度/宽度。 onLayout 稍后会在您 parent 真正想要您的地方调用,这可能与您在 onMeasure 中要求的不匹配。

此外, View 已经有 getWidth()getHeight(),它们在布局传递后有效。您是否需要自己的 mViewWidthmViewHeight

关于java - Android getMeasuredHeight 获取错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29277840/

25 4 0
文章推荐: java - Gson 反序列化为 List,其中列表的泛型类型作为类名给出