【问题标题】:When are views drawn in android?什么时候在android中绘制视图?
【发布时间】:2010-08-03 16:33:58
【问题描述】:

我想获取活动中视图的大小,但无法在任何活动生命周期回调(onCreate、onStart、onResume)中获取该信息。我假设这是因为尚未绘制视图。在什么时候绘制视图,是否有回调我可以放置我的代码以便我可以获取视图的大小?

findViewById(R.id.header).getHeight();

【问题讨论】:

  • 你想要height 做什么?
  • 我有一个带有 x 个组件的 gridview,我想调整这些组件的大小,使 gridview 适合屏幕而不需要滚动。它在纵向模式下工作正常,因为我可以获取设备宽度并除以每行的项目数。但在横向模式下,我需要获取设备的高度,但 gridview 不会跨越整个高度,所以我需要能够确定 gridview 可用的空间量。计划通过获取设备高度 - 网格视图上方视图的底部位置来做到这一点。这可能不是最好的方法。

标签: android


【解决方案1】:

How are views drawn 很好地概述了绘图视图的过程。基本上,有一个步骤是衡量一切想要成为的样子,然后是第二个步骤,当事情布置好时。

这听起来像你的问题,你应该能够通过手动设置高度值来实现你的目标。你玩过你的gridview的stretchMode、gravity、layoutHeight等吗?有关参数选择的一些详细信息,请参阅GridView javadoc

【讨论】:

  • 我正在尝试在 java 代码中手动设置 gridview 的大小,但为了做到这一点,考虑到活动中的其他视图,我需要知道我有多少空间可用于 gridview但我无法获得该值,因此无法确定如何调整 gridview 的大小。
  • 但是为什么要手动设置gridview的大小呢?
  • 因为我将游戏的图块放在网格视图中,并且滚动会脱离游戏玩法。使用gridview 可能是一个错误。使用 TableLayout 或创建自定义布局会更好,但这是我的第一个 Android 应用程序,我不想立即深入研究。
  • 我认为这比尝试手动设置大小要容易得多,工作也更加一致。 developer.android.com/guide/tutorials/views/…
【解决方案2】:

在实例化布局后,它应该可以在 onCreate()、onStart() 和 onResume() 中工作。试试:

findViewById(R.id.header).getLayoutParams().height

【讨论】:

  • 返回的高度为 -2。在尝试获取高度之前,我肯定会调用 setContentView() 。我还有什么需要做的吗?
  • 嗯..让我做更多的研究;会回复你的。
  • ...在接下来的 9 年里,他再也没有出现过。 :p
猜你喜欢
  • 2018-08-17
  • 2011-03-07
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多