11
|
Randy Sugianto 'Yuku' · 技术社区 · 14 年前 |
![]() |
1
11
您获得0大小的原因是,只有在完全创建活动之后,布局才会完成,即onCreate()、onStart()和onResume()都已完成。我所知道的获取准确大小的最简单方法是在布局完成后调用方法,例如使用按钮上的单击侦听器。由于在布局完成之前按钮不会显示,因此在激发其单击侦听器时,大小必须可用。 这只是一个猜测,但我认为这很难做到,因为他们不希望人们在系统刚完成屏幕布局后就弄乱布局大小。如果他们提供了一个“onlayoutfinished()”回调,那么如果您修改了其中的布局,您可能会陷入一个循环中。例如,假设:布局已完成;调用OnlayoutFinished()并修改其中的布局;现有布局现在无效;布局已重新完成;再次调用OnlayoutFinished();再次调用代码等等。
另一种方法是创建自定义视图并重写
(我写道,这是建议的大小,因为我认为在此之后,可以根据布局约束更改大小。然而,这是我不久前读到的一个模糊的记忆,我从未做过详细的实验。)一旦你做了这件事,你就可以用这个尺寸来做你想做的任何事情——你甚至可以通过使用
|
|
2
7
View对象提供名为OnSizeChanged的方法(int w、int h、int oldw、int oldh)。当布局更改其中一个组件的大小时,调用它。如果重写此方法,则此方法版本中的代码将知道其自身的大小,如下面的代码片段所示。
|
![]() |
sanmacorz · 如何在Tkinter上居中放置画布小部件 2 年前 |
![]() |
Darkykitsune · 布局大于设备屏幕导致应用程序崩溃 6 年前 |
|
user9606220 · 如何将图像添加到顶部布局 7 年前 |
![]() |
Abaqus · 如何使TextView字符大小相同? 7 年前 |
![]() |
Boucherie · 为Rails中的布局类实例变量选择控制器 7 年前 |