在运行时确定android视图的大小在我的活动创建之后,我正在尝试将动画应用到我的Android应用程序中的一个视图中。为此,我需要确定视图的当前大小,然后设置动画以从当前大小缩放到新大小。这个部分必须在运行时完成,因为视图根据用户输入的不同而缩放到不同的大小。我的布局是用XML定义的。这似乎是一个简单的任务,有很多这样的问题,虽然没有解决我的问题,显然。所以也许我遗漏了一些显而易见的东西。我对自己的观点有以下几点看法:ImageView myView = (ImageView)getWindow().findViewById(R.id.MyViewID);这很好,但是当调用getWidth(), getHeight(), getMeasuredWidth(), getLayoutParams().width等等,它们都返回0。我也尝试过手动调用measure()在视图后调用getMeasuredWidth(),但这没有任何效果。我尝试调用这些方法,并检查活动中调试器中的对象onCreate()和在onPostCreate()..如何在运行时计算出此视图的确切维度?
3 回答
四季花海
TA贡献1811条经验 获得超5个赞
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();if (viewTreeObserver.isAlive()) { viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { view.getViewTreeObserver().removeOnGlobalLayoutListener(this); viewWidth = view.getWidth(); viewHeight = view.getHeight(); } });}
凤凰求蛊
TA贡献1825条经验 获得超4个赞
getWidth()
新的Android开发人员犯的一个常见错误是在构造函数中使用视图的宽度和高度。当调用视图的构造函数时,Android还不知道视图的大小,因此大小设置为零。实际尺寸计算在布局阶段,这是发生在施工后,但在任何东西被绘制出来。您可以使用 onSizeChanged()
方法,以便在已知值时通知它们,或者可以使用 getWidth()
和 getHeight()
方法,例如在 onDraw()
方法。
- 3 回答
- 0 关注
- 424 浏览
添加回答
举报
0/150
提交
取消