在运行时确定android视图的大小

在运行时确定android视图的大小

在我的活动创建之后,我正在尝试将动画应用到我的Android应用程序中的一个视图中。为此,我需要确定视图的当前大小,然后设置动画以从当前大小缩放到新大小。这个部分必须在运行时完成,因为视图根据用户输入的不同而缩放到不同的大小。我的布局是用XML定义的。

这似乎是一个简单的任务,有很多这样的问题,虽然没有解决我的问题,显然。所以也许我遗漏了一些显而易见的东西。我对自己的观点有以下几点看法:

ImageView myView = (ImageView)getWindow().findViewById(R.id.MyViewID);

这很好,但是当调用getWidth()getHeight()getMeasuredWidth()getLayoutParams().width等等,它们都返回0。我也尝试过手动调用measure()在视图后调用getMeasuredWidth(),但这没有任何效果。

我尝试调用这些方法,并检查活动中调试器中的对象onCreate()和在onPostCreate()..如何在运行时计算出此视图的确切维度?


翻过高山走不出你
浏览 425回答 3
3回答

四季花海

使用视图上的ViewTree观察者等待第一个布局。只有在第一个布局之后,getWidth()/getHeight()/getMeasuredWidth()/getMeasuredHeight()才能工作。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();     }   });}

凤凰求蛊

你在打电话吗getWidth()在屏幕上显示视图之前?新的Android开发人员犯的一个常见错误是在构造函数中使用视图的宽度和高度。当调用视图的构造函数时,Android还不知道视图的大小,因此大小设置为零。实际尺寸计算在布局阶段,这是发生在施工后,但在任何东西被绘制出来。您可以使用onSizeChanged()方法,以便在已知值时通知它们,或者可以使用getWidth()和getHeight()方法,例如在onDraw()方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android