为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻过高山走不出你 2019-07-06 16:08:42
在运行时确定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个赞

使用视图上的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();
    }
  });}


查看完整回答
反对 回复 2019-07-06
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

你在打电话吗getWidth()在屏幕上显示视图之前?

新的Android开发人员犯的一个常见错误是在构造函数中使用视图的宽度和高度。当调用视图的构造函数时,Android还不知道视图的大小,因此大小设置为零。实际尺寸计算在布局阶段,这是发生在施工后,但在任何东西被绘制出来。您可以使用onSizeChanged()方法,以便在已知值时通知它们,或者可以使用getWidth()getHeight()方法,例如在onDraw()方法。


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 424 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信