假设我们有一个想要完全管理显示区域的 Android 应用程序,因此它可以调整其子控件的大小(在运行时,没有 XML - 我们需要动态地主动修改子控件的大小)。
此应用程序将仅以横向运行,没有键盘输入,因此我们不希望可用区域发生变化。
我们将显示的大小将根据此可用区域计算。例如,一个项目恰好占据可用区域的左半部分,右半部分将与其他项目严格按比例分配。甚至字体大小也会被调整,以便它们正确地适合项目。
我最初的想法是只为 main.xml 提供一个没有内容但配置为扩展到最大大小(具有fill_parent
或类似的东西)的网格布局。我们将使用网格布局来定位事物,但是我们对大小施加的控制将决定布局管理器如何显示事物。
希望我们可以在适当的时间(在初始化之后,绘制之前)查询网格布局以获得分辨率,然后基于此调整所有未来的绘制。
有一个更好的方法吗?我意识到 XML 旨在将内容与演示分开,但这个特定的客户希望完全控制布局,并在必要时限制可以运行代码的设备(它是一个内部应用程序,因此他们可以指定)。
我的另一个想法是在 XML 中添加具有虚假大小的所有子控件(一切都将永远存在,只是大小可能会改变)。但是,通过这样做,我不确定我是否会失去获得可用区域并因此智能调整大小的能力。