解决android getWidth() getHeight() 方法返回的值为0的方法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

使用一个view的getWidth() getHeight() 方法来获取该view的宽和高,返回的值却为0。如果这个view的长宽很确定不为0的话,那很可能是你过早的调用这些方法,也就是说在这个view被加入到rootview之前你就调用了这些方法,返回的值自然为0.

解决该问题的方法有很多,主要就是延后调用这些方法。可以试着在onWindowFocusChanged()里面调用这些方法。

以下是stack overflow中的回答。


Anyhow, the deal is that layout of the contents of a window happens after all the elements are constructed and added to their parent views. It has to be this way, because until you know what components a View contains, and what they contain, and so on, there's no sensible way you can lay it out.

Bottom line, if you call getWidth() etc. in a constructor, it will return zero. The procedure is to create all your view elements in the constructor, then wait for your View's onSizeChanged() method to be called -- that's when you first find out your real size, so that's when you set up the sizes of your GUI elements.

Be aware too that onSizeChanged() is sometimes called with parameters of zero -- check for this case, and return immediately (so you don't get a divide by zero when calculating your layout, etc.). Some time later it will be called with the real values.

AndroidgetWidth()getHeight()方法返回0的问题及解决方法 通过以上方法,我们可以避免getWidth()getHeight()方法返回0的问题,并正确地进行后续的布局和绘制操作。当我们尝试在View的生命周期的早期阶段(例如在onCreate()方法中)调用getWidth()getHeight()方法时,它们可能会返回0。这是因为在View的早期阶段,布局还没有完成,View的宽度和高度还没有被正确计算出来。上述代码中,我们使用View的post()方法将获取宽度和高度的代码放入到消息队列中,以便在View的布局完成后执行。下面是一种常见的解决方法 阅读详情

相关推荐

android getWidth() getHeight() 方法返回0

使用一个view的getWidth() getHeight() 方法来获取该view的宽和高,返回却为0。如果这个view的长宽很确定不为0的话,那很可能是你过早的调用这些方法,也就是说在这个view被加入到rootview之前你就调用了这些方法返回自然为0. 解决该问题的方法有很多,主要就是延后调用这些方法。可以试着在onWindowFocusChanged()里面调用这些方法

青青芳妤 5069

android view getWidthgetHeight0

一般在刚开始开发android时,会犯一个错误,即在View的构造函数中获取getWidth()getHeight(),当一个view对象创建时,android并不知道其大小,所以getWidth()getHeight()返回的结果是0,真正大小是在计算布局时才会计算,所以会发现一个有趣的事,即在onDraw( ) 却能取得长宽的原因。   如何在构造函数中如何取得长宽。 J

学习记录 8844

关于控件getWidthgetHeight方法都为0的解释及解决方法

问题描述: 版主今天下午一直纠结这个问题,为什么有时候用getWidthgetHeight方法得到的控件的宽度和高度为0? 思路: 1.在我调用上述两个方法的时候控件并没有绘制,所以不知道宽高度。那么控件什么时候加载呢?我试着通过试验说明之。 先试验思路一:package com.testwidthheight;import android.app.Activity; import and

1774

getWidth()==0解决方案

Android遇到getWidth()=0解决方案

wansho 1667

视图的getWidth()和getHeight()返回0

我正在动态创建我的android项目中的所有元素。 我正在尝试获取按钮的宽度和高度,以便可以旋转该按钮。 我只是想学习如何使用android语言。 但是,它返回0。 我做了一些研究,发

asdfgh0077的博客 1901

为何 view.getWidth和view.getHeight返回0

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final ImageView imageView = (ImageView) findViewB

Sanjay的专栏 4090

view的getWidth() getHeight() 总是返回0 的几种解决方法

当我们在oncreate 调用 getwith() 与 getheigh()返回0 的原因是我们的view 在此时还没有绘制出来,不光在oncreate .Activity生命周期中,onStart,onResume,onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。 所以一个解决方法: 就是将 getwit

fangchao3652 2565

android view.getWidth(), view.getHeight() 返回0的问题的解决方案

android开发中有很多时候需要获取view的宽高尺寸。Android中提供了View.getWidth()和View.getHeight()两个方法。但是初学者发现调用这两个方法返回结果经常为0.这是因为在onCreate(), onResume()方法中调用View.getWidth()方法的时候,这个view还没有绘制。那么怎么正确地得到view的尺寸呢?简单罗列下解决方法。    

Woook蹒跚学步 2205

android获取高度为0,Android getWidth() getHeight() 方法返回0

使用一个view的getWidth() getHeight() 方法来获取该view的宽和高,返回却为0。如果这个view的长宽很确定不为0的话,那很可能是你过早的调用这些方法,也就是说在这个view被加入到rootview之前你就调用了这些方法返回自然为0.解决该问题的方法有很多,主要就是延后调用这些方法。可以试着在onWindowFocusChanged()里面调用这些方法。以下是s...

weixin_39971172的博客 573

View getWidth()getHeight()0解决办法

'在onCreate()方法中获取View的width和height时,取出来的0。 为什么呢? 因为View的width和height只有在onMesure()和onLayout()被调用之后才能取到。而onCreate()被调用之后onMesure()和onLayout()才会被调用。 解决方法有三: 1.View.post() view.post(new Runnable() {...

wilanzai的博客 2668

getWidth() getHeight()返回0

使用一个view的getWidth() getHeight() 方法来获取该view的宽和高,返回却为0。如果这个view的长宽很确定不为0的话,那很可能是你过早的调用这些方法,也就是说在这个view被加入到rootview之前你就调用了这些方法返回自然为0. 解决该问题的方法有很多,主要就是延后调用这些方法。可以试着在onWindowFocusChanged()里面调用这些方法

tomyang1234的专栏 1029

getHeightgetWidth,getMeasuredHeight,getMeasureWidth

源码分析 /** * Like {@link #getMeasuredHeightAndState()}, but only returns the * raw height component (that is the result is masked by * {@link #MEASURED_SIZE_MASK}). * * @ret...

lidongxiu0714 2680

Android之view获取getWidth()getHeight()

<br /><br />一般在刚开始开发android时,会犯一个错误,即在View的构造函数中获取getWidth()getHeight(),当一个view对象创建时,android并不知道其大小,所以getWidth()getHeight()返回的结果是0,真正大小是在计算布局时才会计算,所以会发现一个有趣的事,即在onDraw( ) 却能取得长宽的原因。<br /><br />如何在构造函数中如何取得长宽:<br /> <br /> <br />width = activity.getWindow

5778

android自定义形状的双正弦曲线(充电电池浮动电量),自定义View的getWidth()0的问题

文章目录自定义viewattrs下resources相关styleablexml 引用动态设置 自定义view import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.Val...

The blog of CSDN in 杨天福 7387

Android 开发问题:View 的 getWidthgetHeight 方法返回都为 0

Android 开发问题:View 的 getWidthgetHeight 方法返回都为 0

weixin_52173250的博客 305

Android getWidth() getHeight() 方法返回0

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34092370的博客 184

Android调用getWidth()getHeight()获取视图尺寸为0解决办法

最近在开发的时候碰到需要根据RecyclerView的尺寸动态设定RecyclerView视图内每个item的尺寸的问题 即使在我findById后调用getWidth()getHeight()还是会有0的情况,只有在隔一段时间后再去获取才会获取到实际的。 这个原因是因为View还没有绘制完成,可能你看到的是View已经显示了,可是获取View尺寸是在View绘制完成之前。 我总不能所有的都延迟个几百毫秒才去获取吧? 最后的解决办法,使用View.post,等到View绘制完成后才会走这里,

Charleyszc的博客 2536

为什么View中的getWidth()getHeight()0

       在View的构造函数中获取getWidth()getHeight() 当一个view对象创建时,android并不知道其大小,所以getWidth()getHeight()返回的结果是0,真正大小是在计算布局时才能计算出来,所以会发现一个有趣的事,即在onDraw( ) 却能取得长宽的原因。

herryz的专栏 7823
上一篇: Android初级教程_获取Android控件的宽和高
下一篇: Android压缩图片到100K以下并保持不失真的高效方法
z2m
z2m
博客等级 码龄14年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值